linux:如何显示文件的权限(如 ls -l)对 find 命令返回的文件执行的操作

linux:如何显示文件的权限(如 ls -l)对 find 命令返回的文件执行的操作

我正在执行一个 find 命令来显示特定扩展名的文件,例如:

find $directory -type f -name "*.vm"

不过我希望能够看到文件权限(如 ls -l 显示的一样)。

如何才能做到这一点?

答案1

GNUfind有一个-ls指令可供使用。它的输出格式与 非常接近但不完全匹配ls -l

如果没有指定 find 的默认操作,则-print只会打印找到的文件名和路径。如果添加(或替换-print为)-ls,则会得到更详细的列表。

如果您出于某种原因想要某种特定格式,-printf这就是您想要的。例如,尝试以下操作:

find . -printf "%M %n %8.8u %8.8g %8.8s %Ax %AX %p\n"

大致复制ls -l输出格式。(使用不同的日期格式;可能也可以复制 ls 的行为;有关find可用格式说明符的详细信息以及printf(3)数字的作用的详细信息,请参阅手册页。)

一般来说,你想避免如果可以的话使用-exec,如果必须使用 -exec,你尝试使用+而不是{}在一次调用中提供多个文件名。否则,该命令将对每个符合条件的文件执行一次,如果文件数量很大,则会导致严重的性能损失。

还要注意,如果您不需要递归行为,最简单的解决方案可能就是首先使用 ls:ls -ld $directory/*.vm

答案2

您可以指定-ls选项find。或者,如果您需要特定格式,请使用-exec

find "$directory" -type f -name '*.vm'  -exec ls -l {} \;

相关内容