BusyBox 1.01 上的递归触摸命令

BusyBox 1.01 上的递归触摸命令

我正在尝试编写一个 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

您的 busybox 可能有参数命令:

find $1  | xargs touch

该命令的良好效果是能够一次调用例如使用多个文件名的 touch,从而大大缩短网络运行时间。

答案2

我有完全相同的需求,在试验了 BusyBox 实现的差异之后,创建了以下单行 bash 脚本:

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

您可以根据需要使用参数自定义脚本。sed 命令会转义所有特殊文件名字符。

相关内容