Esto funcionó para mí al buscar archivos con una fecha específica:
ls | grep '2018-08-22' | xargs -I '{}' cp '{}' ~/data/lidar/tmp-ajp2/
Para copiar archivos a directorios encontrados por grep, use -printf para generar directorios y -i para colocar el argumento de comando desde xarg (después de la canalización)
find ./ -name 'filename.*' -print '%h\n' | xargs -i cp copyFile.txt {}
esto copia copyFile.txt a todos los directorios (en ./) que contienen "nombre de archivo"
grep -l -r "TWL" --exclude=*.csv* | xargs cp -t ~/data/lidar/tmp-ajp2/
Explicación:
- grep
-l
opción para generar solo nombres de archivos - xargs para convertir la lista de archivos de la entrada estándar a argumentos de línea de comandos
- cp
-t
opción para especificar el directorio de destino (y evitar el uso de marcadores de posición)
necesitas xargs con el marcador de posición opción:
grep -r "TWL" --exclude=*.csv* | xargs -I '{}' cp '{}' ~/data/lidar/tmp-ajp2/
normalmente si usa xargs
, pondrá la salida después el comando, con el marcador de posición ('{}'
en este caso), puede elegir la ubicación donde se inserta, incluso varias veces.