Synology NAS中find命令排除指定文件及目录的权限问题求助
解决Synology NAS任务计划中find命令的权限问题与文件排除需求
正确的find命令写法
直接用-prune参数跳过权限受限的#recycle目录,同时精确排除/volume1/Ingest当前层级的*.txt文件,命令示例如下:
find /volume1/Ingest \ -name "#recycle" -prune -o \ -path "/volume1/Ingest/*.txt" -prune -o \ # 这里添加你的实际匹配条件,例如找所有普通文件:-type f -type f -print
参数解释
-name "#recycle" -prune -o:定位到#recycle目录后,-prune会直接跳过该目录的遍历(不会进入目录尝试读取内容),从根源避免权限报错;-o表示逻辑“或”,即不满足前一个条件时才执行后续逻辑。-path "/volume1/Ingest/*.txt" -prune -o:精确匹配Ingest根目录下的所有*.txt文件,-prune会排除这些文件;路径写全是为了只排除当前层级的txt,不会影响子目录中的txt文件。- 最后添加你的实际需求条件(如
-type f找普通文件、-mtime +7找7天前的文件等),并用-print输出符合条件的结果。
为什么之前的方法失效
- 使用
-not -path时,find仍会尝试进入#recycle目录再过滤,必然触发权限错误;而-prune是在进入目录前就跳过遍历,彻底避免权限问题。 - 未精确限定
*.txt的路径范围,导致要么误排除子目录的txt,要么没排除当前层级的目标文件。
测试与验证
先通过SSH登录Synology NAS,在终端中执行上述命令,确认:
- 无
Permission denied报错 /volume1/Ingest下的*.txt未被列出#recycle目录未被访问
测试通过后,再将命令写入脚本,添加到任务计划中。
内容的提问来源于stack exchange,提问作者Ben Edwards
相关产品推荐
相关产品推荐

