我正在尝试编写一个 bash 脚本,该脚本将在我的 QNap NAS 上运行,以递归方式接触目录。我有这个:
find $1 -exec touch {} +
但是,发现 BusyBox 1.01 附带的版本不支持 -exec 参数,以下是文档:
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
那么,我可以使用其他方法来实现相同的目标吗?谢谢。
答案1
答案2
我有完全相同的需求,在试验了 BusyBox 实现的差异之后,创建了以下单行 bash 脚本:
[/share/MD0_DATA] # cat ./touch_all_folders
#!/bin/sh
find -type d | sed 's/[^[:alnum:].\/_-]/\\&/g' | xargs touch -c
您可以根据需要使用参数自定义脚本。sed 命令会转义所有特殊文件名字符。