Como procuro arquivos em um diretório que contém um texto específico e os copio para outro diretório? Estou usando o shell .ksh.
Responder1
Faça man xargs
e olhe para a -I
bandeira.
find /path/to/directory -type f -exec grep -il "your pattern" {} \; | xargs -I % cp % /dest/dir/
Para economizar digitação coloque este comando no shell script:
#!/usr/bin/ksh
# Script name: locate
find /path/to/directory -type f -exec grep -il "$1" {} \; | xargs -I % cp % /dest/dir/
Para executar digite locate searchstring
onde searchstring
está o texto que você está procurando.
Responder2
Você pode simplesmente fazer isso no diretório base que deseja pesquisar
cp $(grep -r -l "the pattern" *) target_directory
grep -r
significa recusivo-l
significa listar o caminho do arquivo e não a correspondência nele.colocar
$()
o comando irá executá-lo e colocar o resultado no comando externo.cp pegará uma lista de arquivos e, desde que o último caminho seja um diretório, copie todos eles lá.