Rekursiver Touchbefehl auf BusyBox 1.01

1843
Jack Sleight

Ich versuche, ein Bash-Skript zu schreiben, das auf meinem QNap NAS ausgeführt wird, um ein Verzeichnis rekursiv zu berühren. Ich habe das:

find $1 -exec touch {} + 

Finden Sie jedoch heraus, dass mit BusyBox 1.01 das Argument -exec nicht unterstützt wird. Hier sind die Dokumente:

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 

Gibt es einen anderen Ansatz, um das gleiche Ziel zu erreichen? Vielen Dank.

0
In welcher Hülle bist du? / Was hast du zur Verfügung? Ich würde hoffen, dass einer von ihnen 'for' oder 'read' hat, um die Liste von find'sprint zu nehmen? PriceChild vor 13 Jahren 0

2 Antworten auf die Frage

1
Erhhung

Ich hatte genau das gleiche Bedürfnis und habe, nachdem ich mit den Unterschieden in der BusyBox-Implementierung experimentiert habe, dieses einzeilige Bash-Skript erstellt:

[/share/MD0_DATA] # cat ./touch_all_folders #!/bin/sh find -type d | sed 's/[^[:alnum:].\/_-]/\\&/g' | xargs touch -c 

Sie können das Skript nach Bedarf mit Parametern anpassen. Der Befehl sed entgeht allen speziellen Dateinamen.

0
Turbo J

Ihre busybox verfügt möglicherweise über den Befehl xargs :

find $1 | xargs touch 

Dieser Befehl hat den schönen Effekt, dass er z. B. mehrere Dateinamen gleichzeitig berühren kann, wodurch die Netzlaufzeit erheblich verkürzt wird.

Ja, ich habe Xargs. Scheint zu funktionieren, aber einige Dateien haben 'Zeichen in den Dateinamen, und ich bekomme "xargs: unmatched single quote". Irgendwelche Ideen? Jack Sleight vor 13 Jahren 0