GNU/Linux >> Tutoriels Linux >  >> Linux

Comment diriger la sortie de grep vers cp?

Cela a fonctionné pour moi lors de la recherche de fichiers avec une date spécifique :

 ls | grep '2018-08-22' | xargs -I '{}' cp '{}' ~/data/lidar/tmp-ajp2/

Pour copier des fichiers dans les répertoires trouvés par grep, utilisez -printf pour les répertoires de sortie et -i pour placer l'argument de commande à partir de xarg (après le tube)

find ./ -name 'filename.*' -print '%h\n' | xargs -i cp copyFile.txt {}

cela copie copyFile.txt dans tous les répertoires (en ./) contenant "filename"


grep -l -r "TWL" --exclude=*.csv* | xargs cp -t ~/data/lidar/tmp-ajp2/

Explication :

  • grep -l option pour afficher uniquement les noms de fichiers
  • xargs pour convertir la liste de fichiers de l'entrée standard en arguments de ligne de commande
  • cp -t option pour spécifier le répertoire cible (et éviter d'utiliser des espaces réservés)

vous avez besoin de xargs avec l'espace réservé choix :

grep -r "TWL" --exclude=*.csv* | xargs -I '{}' cp '{}' ~/data/lidar/tmp-ajp2/

normalement si vous utilisez xargs , il placera la sortie après la commande, avec l'espace réservé ('{}' dans ce cas), vous pouvez choisir l'emplacement où il est inséré, même plusieurs fois.


Linux
  1. Comment grep avec la sortie couleur

  2. Comment obtenir la valeur de retour de CHILD PROCESS ?

  3. Comment empêcher sed de mettre en mémoire tampon ?

  4. Comment extraire la durée de la sortie ffmpeg?

  5. Comment rediriger /dev/urandom vers la sortie audio Linux ?

Comment supprimer la sortie de Grep, afin qu'elle ne renvoie que le statut de sortie ?

Comment démarrer Grep multi-thread dans le terminal ?

Comment empêcher `ls` de trier la sortie ?

Comment voir la sortie d'un script Php ?

Comment grep \n dans le fichier

sortie grep de long à large