com zsh
:
for f (**/*(D.)) : > $f
.
para fazer isso apenas para arquivos regulares, D
para incluir arquivos e arquivos ocultos em diretórios ocultos.
Para um pequeno número de arquivos, você pode encurtá-lo para :>**/*(D.)
.
Para manter o mesmo tamanho para os arquivos, mas torná-los esparsos sem dados (não ocupando lugar no disco, exceto no sistema de arquivos HFS + da Apple, que não suporta arquivos esparsos):
find . -type f -exec perl -e '
for (@ARGV) {
unless (open F, "+<", $_) {warn "open $_: $!"; next}
unless (seek F, 0, 2) {warn "seek $_: $!"; next}
$size = tell F;
unless (truncate F, 0) {warn "zap $_: $!"; next}
unless (truncate F, $size) {warn "fill $_: $!"; next}
}' {} +
Observe que todos os usuários atualizarão a hora da última modificação dos arquivos.