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.