Comando de toque recursivo no BusyBox 1.01

0

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.

    
por Jack Sleight 24.04.2011 / 19:42

2 respostas

0

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.

    
por 24.04.2011 / 20:21
1

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.

    
por 03.11.2011 / 08:30