Seu busybox pode ter o comando xargs :
find $1 | xargs touch
Este comando tem o bom efeito de poder ligar, e. toque com vários nomes de arquivos de uma só vez, diminuindo um pouco o tempo de execução da rede.
Eu estou tentando escrever um script bash que será executado no meu QNap NAS para tocar um diretório recursivamente. Eu tenho isso:
find $1 -exec touch {} +
No entanto, descobrir que vem com o BusyBox 1.01 não suporta o argumento -exec, aqui estão os documentos:
BusyBox v1.01 (2011.02.08-16:24+0000) multi-call binary
Usage: find [PATH...] [EXPRESSION]
Search for files in a directory hierarchy. The default PATH is
the current directory; default EXPRESSION is '-print'
EXPRESSION may consist of:
-follow Dereference symbolic links.
-name PATTERN File name (leading directories removed) matches PATTERN.
-print Print (default and assumed).
-type X Filetype matches X (where X is one of: f,d,l,b,c,...)
-perm PERMS Permissions match any of (+NNN); all of (-NNN);
or exactly (NNN)
-mtime TIME Modified time is greater than (+N); less than (-N);
or exactly (N) days
Então, há outra abordagem que eu poderia usar para alcançar o mesmo objetivo? Obrigado.
Eu tive exatamente a mesma necessidade e, depois de experimentar as diferenças na implementação do BusyBox, criei este script bash de 1 linha:
[/share/MD0_DATA] # cat ./touch_all_folders
#!/bin/sh
find -type d | sed 's/[^[:alnum:].\/_-]/\&/g' | xargs touch -c
Você pode personalizar o script com parâmetros como achar melhor. O comando sed escapa todos os caracteres especiais do nome do arquivo.