J'ai une liste de noms de fichiers appelée list.txt.copier une liste de fichiers via le terminal
Je souhaite copier les fichiers de cette liste dans un nouveau dossier.
Comment dois-je procéder?
Merci!
J'ai une liste de noms de fichiers appelée list.txt.copier une liste de fichiers via le terminal
Je souhaite copier les fichiers de cette liste dans un nouveau dossier.
Comment dois-je procéder?
Merci!
Vous pouvez le faire:
cp `cat list.txt` new-folder/
Notez que vous devez éviter d'avoir des espaces dans les noms de fichiers lorsque vous utilisez cette (une autre solution serait nécessaire si tel est le cas).
Les backticks exécuter la commande cat list.txt
et d'utiliser la sortie de cette commande en tant que partie de la ligne de commande pour cp
. Les retours à la ligne dans la sortie de cat
sont regroupés dans des espaces avant la substitution de la ligne de commande.
Notez que cela aplanit toute hiérarchie de répertoires dans les fichiers - ils seront tous dans un seul répertoire. –
C'est vrai. La question indiquait une "liste de noms de fichiers" au lieu d'une "liste de noms de chemins". –
Je suis d'accord - ce n'est pas un problème, à moins que le questionneur n'ait pas réfléchi au problème. Inversement, ma réponse n'est peut-être pas ce que le questionneur voulait - précisément parce qu'il préserve la structure du répertoire. Et il serait loin d'être inimaginable de vouloir couper certaines parties du chemin à partir des noms tout en préservant une partie de la structure du répertoire - dont aucune des réponses ne traite. –
utiliser une boucle
while read -r line
do
cp "$line" /destination
done <"file"
Notez que cela aplanit toute hiérarchie de répertoires dans les fichiers - ils seront tous dans un seul répertoire. –
oui, mais oP ne dit pas qu'il doit avoir la même structure. il indique spécifiquement "copier ..... dans un nouveau dossier". – ghostdog74
Si vous souhaitez conserver la structure de répertoire, utilisez un de ces (en supposant GNU tar):
cpio -pvdm /destination <list.txt
tar -cf - -F list.txt | tar -C /destination -x
Dans les deux cas, le résultat net est que/destination est préfixé aux noms des fichiers dans list.txt.
:
dest="<destination folder>" #keep the quotes
for i in `cat < list.txt` #loop each line of list.txt
do
cp $i $dest #in each loop copy $i, e/a line of list.txt to $dest
echo "Done."
done
testés. Assurez-vous que "./list.txt" existe, sinon remplissez manuellement le chemin absolu. :)
L'affiche d'origine ne veut pas déplacer le * fichier * list.txt dans le nouveau dossier; plutôt, list.txt contient une liste de fichiers à déplacer. –
mon mauvais! lol je l'ai réparé – user231609
Ceci est une question de script shell - c'est une question de programmation. –