J'ai besoin de copier tout *.jar
fichiers du répertoire et de tous ses sous-répertoires. Comment puis-je le faire dans un terminal UNIX/Linux? Commande cp -r *.jar /destination_dir
ne fonctionne pas.
rsync
est utile pour la copie de fichiers locaux ainsi qu'entre ordinateurs. Cela fera ce que vous voulez:
rsync -avm --include='*.jar' -f 'hide,! */' . /destination_dir
Toute la structure de répertoire de. est copié dans/destination_dir, mais seuls les fichiers .jar sont copiés. Le -a garantit que toutes les autorisations et les heures sur les fichiers ne sont pas modifiées. Le -m omettra les répertoires vides. -v est pour une sortie commentée.
Pour un essai, ajoutez un -n, il vous dira ce qu'il ferait mais ne copiera rien.
Si vous n'avez pas besoin de la structure de répertoires uniquement des fichiers jar, vous pouvez utiliser:
shopt -s globstar
cp **/*.jar destination_dir
Si vous voulez la structure de répertoires, vous pouvez vérifier cp
's --parents
option.
Si votre recherche a un commutateur -exec et cp une option -t:
find . -name "*.jar" -exec cp -t /destination_dir {} +
Si vous ne trouvez pas le "+" pour l'appel parallèle, vous pouvez utiliser ";" mais alors vous pouvez omettre le -t
:
find . -name "*.jar" -exec cp {} /destination_dir ";"
tar -cf - `find . -name "*.jar" -print` | ( cd /destination_dir && tar xBf - )
cp --parents `find -name \*.jar` destination/
de man cp
:
--parents
use full source file name under DIRECTORY
Si vous souhaitez conserver la même hiérarchie de répertoires sous la destination, vous pouvez utiliser
(cd SOURCE && find . -type f -name \*.jar -exec tar cf - {} +) \
| (cd DESTINATION && tar xf -)
Cette façon de procéder, au lieu d’étendre la sortie de find
dans les symboles inverses, présente l’avantage de pouvoir traiter n’importe quel nombre de fichiers.
find . -name \*.jar | xargs cp -t /destination_dir
En supposant que vos noms de fichiers jar ne contiennent pas d'espaces et que votre cp
dispose de l'option "-t". Si cp
ne peut pas faire "-t"
find . -name \*.jar | xargs -I FILE cp FILE /destination_dir