查找文件并更改权限,忽略目录

时间:2018-05-08 05:09:09

标签: find aix

我正在尝试编写一个find命令,该命令由目录中的特定用户搜索文件,并仅更改这些权限。目前我正在使用以下内容:

ssh ${DEST_SERV} "find ${DEST_LOCATION} -type f -user a_user -exec chmod 644 {} \;" 

这样可以正常工作,但是当尝试解析任何不属于执行命令的用户所拥有的子目录时,会导致以下问题。

查找:0652-081无法将目录更改为/ usr / local / application / download / sub_directory:   :文件访问权限不允许指定的操作。

有没有办法可以修改它来只检查指定的目录和用户文件,并忽略那里的任何子目录?

1 个答案:

答案 0 :(得分:1)

Lorinczy有一个有效的观点。如果它只是困扰你的消息,只需将其发送到/ dev / null。但是,还有一个更大的问题可能就是你想要解决的问题,那就是如果有目录,你不想浪费时间去那些目录。

你的问题的答案是-prune。但是,对我来说,很难弄清楚如何使用它。这是一个例子。我创建了一些文件,如果我发现,我会找到三个文件:

find . -name a -print
./a
./b/a
./c/a

如果我添加-prune以不下载与[a-z]匹配的目录,那么我得到:

find . -type d -name '[a-z]' -prune -o -name a -print
./a

find . -type d -regex '\./.*' -prune -o -name a -print
./a

相反,如果您想要关闭用户可以关闭的目录而不是关闭无法关闭的目录,那么您可以通过查找来执行此操作,但这将是一个使用-perm确定的长复杂命令“手动”目录,用户可以向下,然后-prune用户无权搜索的目录。