2017-09-21 9 views
1

shell Unix kshComment copier plusieurs fichiers dans le répertoire et déplacer chaque dans leur répertoire correct

J'ai créé une liste de fichiers et essaie actuellement de copier chaque fichier dans leur chemin.

(mylist) 
-1111 
-2222 
-3333 
-4444 
-5555 

répertoire courant /sample/dir/inconnu/

-1111fileneeded.txt 
-2222fileneeded.txt 
-3333fileneeded.txt 
-4444fileneeded.txt 
-5555fileneeded.txt 
-6666dontneed.txt 
-7777dontneed.txt 
-8888dontneed.txt 
...etc 

Les 4 premiers caractères de chaque fichier correspond à leur chemin correct à l'endroit où ils doivent aller.

/sample/dir/1111/ 
/sample/dir/2222/ 
/sample/dir/3333/ 
/sample/dir/4444/ 

Voici donc ce que j'ai actuellement ..

for i in `cat mylist` 
do echo "$i" 
find /sample/dir/unknown/mylist* 

c'est là où je suis un peu coincé et essayer de comprendre ce qui doit être fait pour que chaque fichier déplacé dans leur répertoire.

+0

Quelle plateforme et quelle coque utilisez-vous? –

+0

Excuses, oui j'utilise Shell – Joel

+0

/Which/shell? bash, csh, tcsh, sh, ...? –

Répondre

0

Cela devrait fonctionner

#!/bin/ksh 
while IFS=\| read -r line; do 
    dir=`echo $line | cut -c 2-5` 
    mv "$line /sample/$dir/$line" 
done > filelist.txt 

IFS est échapper à caractère spécial, juste au cas où.

cut -c 2-5 prend toutes les ombles de 2 à 5 (parce qu'il ya un tableau de bord au début de votre nom de fichier)

Permettez-moi de savoir s'il y a quelque chose d'autre que vous ne comprenez pas.

+0

Merci beaucoup! – Joel

+0

Si ma réponse a aidé pouvez-vous upvote/l'accepter s'il vous plaît? – Will

+1

Salut Will, je l'ai accepté, mais je ne peux pas upvote cela car je n'ai pas assez de rep pour le faire pour le moment. Mais merci beaucoup! – Joel