Je voudrais copier tous les fichiers d'un répertoire à l'exception d'un nommé Default.png. Il semble qu'il existe plusieurs façons de procéder. Qu'est-ce qui vous semble le plus efficace?
Simple, si src/
ne contient que des fichiers:
find src/ ! -name Default.png -exec cp -t dest/ {} +
Si src/
a des sous-répertoires, cela les omet, mais copie les fichiers à l'intérieur d'eux:
find src/ -type f ! -name Default.png -exec cp -t dest/ {} +
Si src/
a des sous-répertoires, cela ne revient pas dedans:
find src/ -type f -maxdepth 1 ! -name Default.png -exec cp -t dest/ {} +
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
rsync est mon remplacement 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
Je ferais juste:
cp srcdir/* destdir/ ; rm destdir/Default.png
sauf si les fichiers sont volumineux. Sinon, utilisez par exemple.
find srcdir -type f/ |grep -v Default.png$ |xargs -ILIST cp LIST destdir/
cp `ls | grep -v Default.png` destdir