¿Cómo busco archivos en un directorio que contienen un texto específico y los copio a otro directorio? Estoy usando el shell .ksh.
Respuesta1
Hazlo man xargs
y mira la -I
bandera.
find /path/to/directory -type f -exec grep -il "your pattern" {} \; | xargs -I % cp % /dest/dir/
Para ahorrar escritura, coloque este comando en el script de shell:
#!/usr/bin/ksh
# Script name: locate
find /path/to/directory -type f -exec grep -il "$1" {} \; | xargs -I % cp % /dest/dir/
Para ejecutar escriba locate searchstring
dónde searchstring
está el texto que está buscando.
Respuesta2
Simplemente puede hacerlo desde el directorio base que desea buscar.
cp $(grep -r -l "the pattern" *) target_directory
grep -r
significa recursivo-l
significa enumerar la ruta del archivo, no la coincidencia que contiene.colocar
$()
el comando lo ejecutará y colocará el resultado en su lugar en el comando externo.cp tomará una lista de archivos y, siempre que la última ruta sea un directorio, los copiará todos allí.