GNU/Linux >> Tutoriels Linux >  >> Linux

Est-il possible de diriger les résultats de FIND vers une commande COPY CP ?

Il y a une option peu utilisée pour cp :-t destination -- voir la page de manuel :

find . -iname "*.SomeExt" | xargs cp -t Directory

Vous pouvez utiliser | comme ci-dessous :

find . -iname "*.SomeExt" | while read line
do
  cp $line DestDir/
done

Répondre à vos questions :

  • | peut être utilisé pour résoudre ce problème. Mais comme vu ci-dessus, cela implique beaucoup de code. De plus, | va créer deux processus - un pour find et un autre pour cp .

  • Au lieu d'utiliser exec() à l'intérieur de find résoudra le problème en un seul processus.


Bonne question !

  1. pourquoi ne pouvez-vous pas simplement utiliser | tuyau? c'est pas pour ça ?

Vous pouvez piper, bien sûr, xargs est fait pour ces cas :

find . -iname "*.SomeExt" | xargs cp Destination_Directory/
  1. Pourquoi tout le monde recommande-t-il -exec

Le -exec est bon car il offre plus de contrôle sur ce que vous exécutez exactement. Chaque fois que vous faites un pipe, il peut y avoir des problèmes avec des cas d'angle :noms de fichiers contenant des espaces ou de nouvelles lignes, etc.

  1. comment puis-je savoir quand utiliser ce (exec) sur pipe | ?

Cela dépend vraiment de vous et il peut y avoir de nombreux cas. J'utiliserais -exec chaque fois que l'action à effectuer est simple. Je ne suis pas un très bon ami de xargs , j'ai tendance à préférer une approche dans laquelle le find la sortie est fournie à un while boucle, comme :

while IFS= read -r result
do
    # do things with "$result"
done < <(find ...)

Linux
  1. Trouver le temps d'exécution d'une commande ou d'un processus sous Linux

  2. Commande Linux cp

  3. Un guide de la commande Linux "Rechercher"

  4. Comment diriger les résultats de 'find' vers mv sous Linux

  5. Comment chmod les fichiers en fonction des résultats de la commande find

Comment rechercher des fichiers avec la commande fd sous Linux

Corrigez l'erreur impossible de trouver la commande hwmatch sur Grub

Trouver la ligne de commande ?

15 exemples super utiles de la commande Find sous Linux

Copier des fichiers en toute sécurité avec la commande SCP

La commande Linux find Directory :Explication