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

Find 查找文件并更改权限,忽略目录,find,aix,Find,Aix,我正在尝试编写一个find命令,该命令由目录中的特定用户搜索文件,并仅更改这些权限。目前,我正在使用以下工具: ssh ${DEST_SERV} "find ${DEST_LOCATION} -type f -user a_user -exec chmod 644 {} \;" 这可以正常工作,但当试图解析执行命令的用户不拥有的任何子目录时,会导致以下问题 查找:0652-081无法将目录更改为/usr/local/application/download/sub_目录: :文件访问权限不允

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

ssh ${DEST_SERV} "find ${DEST_LOCATION} -type f -user a_user -exec chmod 644 {} \;" 
这可以正常工作,但当试图解析执行命令的用户不拥有的任何子目录时,会导致以下问题

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


有没有办法修改它,只检查命名目录和用户文件,而忽略其中的任何子目录?

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来实现这一点,但使用-perm手动确定用户可以进入的目录,然后-prune用户不允许搜索的目录,这将是一个非常复杂的命令。

您不必更改任何内容,只需抑制stderr:find。。。2> /dev/nullThank@Lorinczy和Pedz,我已经决定使用您的建议来抑制stderr,它似乎也在按照我的意愿工作!
find . -type d -regex '\./.*' -prune -o -name a -print
./a