Você tem tantos arquivos em /tmp
que você não pode caber em todos os nomes na linha de comando de uma só vez (a versão que você possui também é insegura se algum caminho tiver espaço em branco).
A boa notícia é que find
pode fazer isso para você de forma segura e correta:
find /tmp -exec touch -c '{}' +
encontrará todos os arquivos como antes e, em seguida, executará touch
quantas vezes forem necessárias com tantos arquivos quanto couberão a cada vez.
find
' -exec
option recebe um comando para executar os arquivos correspondentes e substitui os caminhos em que {}
é. +
significa que ele executa o comando com muitos arquivos de uma vez ou \;
executaria touch
uma vez para cada arquivo.
Como observado nos comentários, -execdir touch -c '{}' \;
é estritamente mais seguro aqui, embora provavelmente seja um pouco mais lento, e não há muito benefício a ser obtido em um sistema de usuário único. Ele evita determinadas condições de corrida, alternando para cada subdiretório primeiro e, em seguida, executando o comando apenas para arquivos nesse diretório a cada vez. A opção -execdir
é uma extensão não padrão, mas é suportada no GNU , FreeBSD , OpenBSD , NetBSD e OS X find
s; os outros Unices comerciais geralmente não têm isso. Não tenho certeza do que você está usando, mas leve em conta o que precede se for aplicável.