GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo canalizar la salida de grep a cp?

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.


Linux
  1. ¿Cómo iniciar Grep de subprocesos múltiples en la terminal?

  2. ¿Cómo evitar que `ls` ordene la salida?

  3. ¿Cómo hago grep recursivamente?

  4. ¿Cómo obtener el valor de retorno de CHILD PROCESS?

  5. ¿Cómo evitar que sed almacene en búfer?

¿Cómo ver la salida de un script PHP?

¿Cómo extraer el tiempo de duración de la salida ffmpeg?

¿Cómo puedo excluir directorios de grep -R?

¿Cómo concatenar varias líneas de salida en una sola línea?

Cómo grep \n en el archivo

Cómo grep salida ps con encabezados