Como `tocar` arquivos recursivamente?


40

Preciso alterar o carimbo de data e hora de cerca de 5000 arquivos.

Digitando touch file1.txt, touch file2.txtvai me levar para sempre.

Existe uma maneira de fazer algo nas linhas de touch -R *?


11
você quis dizer isso touch file{1..3}.txt?
Avinash Raj

2
Você não especificou qual shell está usando, mas com o zsh, touch **/*é conveniente.
Marc Glisse

@ Marc Glisse Lembre-se de que a lista de argumentos fica muito longa.
bac0n 8/10

No bash, você precisa definir o globstar antes de poder usar o touch **
bac0n

Respostas:


71

Você pode usar o findcomando para encontrar todos os seus arquivos e executar touchem todos os arquivos encontrados usando-exec

find . -type f -exec touch {} +

Se você deseja filtrar seu resultado apenas para arquivos de texto, pode usar

find . -type f -name "*.txt" -exec touch {} +

17
Eu sugiro usar -execo +terminador de (em vez de \;). Isso encadeará vários argumentos em cada touchinstância (até o limite de argumentos do sistema) e, portanto, desembolsará muito menos (e provavelmente será mais rápido).
Oli


2
E para uma corrida a seco, deixe de fora a -exec touch {} +peça e ela imprimirá no seu terminal o que isso afetaria.
Alex

5
Obrigado, embora eu ache que 'find' está faltando seu primeiro parâmetro. find . -type f -exec touch {} +
giltsl

E se eu quiser apenas alterar o tempo de acesso, não o tempo de modificação? Deveria ser "find -type f -exec touch -a {} +"?
weeo
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.