130 votes

BASH copie tous les fichiers sauf un

Je voudrais copier tous les fichiers d'un répertoire à l'exception d'un fichier nommé Default.png. Il semble qu’il existe plusieurs façons de procéder. Qu'est-ce qui vous semble le plus efficace?

171voto

Jon Points 23749

Devrait être comme suit:

 cp -r !(Default.png) /dest
 

Si vous copiez dans un dossier imbriqué dans le dossier actuel (appelé exemple dans le cas ci-dessous), vous devez également omettre ce répertoire:

 cp -r !(Default.png|example) /example
 

86voto

matja Points 2087

rsync est mon remplaçant cp / scp depuis longtemps:

 rsync -av from/ to/ --exclude=Default.png

-a, --archive               archive mode; equals -rlptgoD (no -H,-A,-X)
-v, --verbose               increase verbosity
 

61voto

John Kugelman Points 108754

Simple, si src/ ne contient que des fichiers:

 find src/ ! -name Default.png -exec cp {} dest/ +
 

Si src/ a des sous-répertoires, cela les omet, mais copie les fichiers à l'intérieur de ceux-ci:

 find src/ -type f ! -name Default.png -exec cp {} dest/ +
 

Si src/ a des sous-répertoires, cela ne les renvoie pas:

 find src/ -type f -maxdepth 1 ! -name Default.png -exec cp {} dest/ +
 

2voto

nos Points 102226

Je ferais juste:

 cp srcdir/* destdir/ ; rm destdir/Default.png
 

sauf si les fichiers sont gros. Sinon, utilisez par exemple

 find srcdir -type f/ |grep -v Default.png$ |xargs -ILIST cp LIST destdir/
 

2voto

Will Hartung Points 57465
cp `ls | grep -v Default.png` destdir

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