Comando Linux: localizar arquivos e executar o comando neles

9

Como faço para encontrar todos os arquivos em um diretório e subdiretórios e executar um comando neles?

Por exemplo,

find . -type f -name "*.txt" 

encontra todos os arquivos txt e:

find . -type f -name "*.txt" | gedit

envia para o gedit, mas dentro de um arquivo de texto. Eu quero que o gedit abra todos os arquivos de texto.

    
por xyz 14.03.2013 / 22:12

2 respostas

13

Você pode usar o sinalizador -exec para executar um comando em cada arquivo correspondente:

$ find ./ -type f -name "*.txt" -exec gedit "{}" \;

Sintaxe

A sintaxe é um pouco estranha (veja -exec command ; nas páginas de manual para mais):

The string '{}' is replaced by the current file name being processed

Você também pode querer considerar -execdir , que fará o mesmo, mas executa o comando do subdiretório que contém o arquivo correspondente (geralmente é preferível).

    
por 14.03.2013 / 22:15
5

find . -type f -name "*.txt" -print0 | xargs -0 gedit

    
por 14.03.2013 / 22:14