Como toco recursivamente os arquivos que correspondem a um padrão


8

No meu diretório ~ / docs, quero "tocar" em todos os arquivos que terminam com .txt

Como posso fazer isso?

Respostas:


20

Com find:

find ~/docs -name "*.txt" -exec touch {} \;
  • Você pesquisa em ~/docs
  • A nameopção corresponderá a todos os txtarquivos -  execexecutará o comando touchno nome do arquivo, que é substituído em{}
  • \;finaliza o comando e touchserá chamado uma vez para cada arquivo encontrado

Nota:

  • Uma pequena variação, \+no final, cria um único comando para executar touchem todos esses arquivos de uma só vez. Isso não é possível com todos os comandos, mas funciona touche economiza algumas chamadas se você tiver muitos arquivos afetados.

4
{} \+seria melhor aqui ... touchpode lidar com muitos nomes de arquivos em sua linha de comando, por exemplo, com 10 mil arquivos e {} \; 10 mil chamadas serão feitas para touch... O uso {} \+chamará touchapenas uma vez (dependendo da memória disponível) ... Aqui é um trecho de da descoberta man-page: -exec command {} + ... The command line is built in much the same way that xargs builds its command lines. Há mais detalhes na man finddocumentação.
precisa saber é o seguinte

@ Peter.O True, apenas um hábito meu de usar a outra sintaxe.
slhck

@ sllck: E muito mais lento com maior sobrecarga.
precisa
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.