2017-10-02 18 views
0

Je veux un script capable de lire le contenu d'un fichier texte qui contient des noms de dossier et déplace les dossiers de leur répertoire vers un dossier spécifique. Voici mon script:Déplacer des fichiers dans une boucle for

 #!/bin/bash 
    for i in $(cat /folder/collected/folders.txt) 
     do 
     mv /fromfilelocation/$i /folder/Collected/ 
     done 

Ce script travaille en partie il ne copie que le dernier dossier dans le fichier texte, comme pour les autres dossiers, il donne l'erreur « impossible: données ou répertoire introuvable » Mais le dossier est là et selon l'erreur le répertoire du dossier est correctement affiché.

Que dois-je faire pour le faire fonctionner correctement?

+1

le fichier ne contient folders.txt chemins complets ou des chemins relatifs? – hovanessyan

+0

Y a-t-il des espaces ou des caractères spéciaux dans vos noms de fichiers? – Thomas

+0

Voici un doublon pour tester "cat /folder/collected/folders.txt | en lisant chacun, faire mv/fromfilelocation/$ chaque/dossier/Collected; done;" – hovanessyan

Répondre

-1

utilisation en boucle à la place

while read i; do 
    mv fromfilelocation/"$i" /folder/Collected/ 
done </folder/collected/folders.txt 
+1

Citez vos variables –

+0

Merci de m'avoir signalé! –

+0

@BhawandeepSingla J'ai essayé la boucle while comme vous l'avez dit, mais elle copie tout le répertoire et pas les dossiers à l'intérieur – mido