2 votes

Bash : boucle for, copie, sauvegarde

Hey, pas sûr à 100% de ce que signifie cette erreur.

% for f in "*" ; do cp $f ../backup/backup$f ; done
cp: ../backup/backup* non trouvé

L'objectif est de copier tous les fichiers dans un dossier vers un dossier de sauvegarde et de renommer les fichiers en backup.

11voto

Mark Byers Points 318575

Le * ne doit pas être entre guillemets :

for f in * ; do cp $f ../backup/$f ; done

Lorsque vous utilisez des guillemets, cela empêche le shell de l'expandre, donc il cherche un fichier appelé *, pas tous les fichiers dans le répertoire comme vous le vouliez.

7voto

janmoesen Points 3601

Vous citez les mauvaises choses : citez les variables, pas les wildcards!

% for f in *; do cp "$f" "../backup/$f" ; done

BTW, dans ce cas, vous pouvez simplement faire :

% cp * ../backup/

3voto

sud03r Points 6093

Ou peut-être ceci :

cp -b * ../sauvegarde 

Si vous voulez les renommer :

% for f in * ; do cp "$f" "../sauvegarde/${f}-sauvegarde" ; done

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X