如何对具有特定权限的文件按大小进行排序?

如何对具有特定权限的文件按大小进行排序?

我需要按大小对所有具有 644 个权限的文件进行排序。

到目前为止,我尝试使用ls命令来查找和排序,但似乎不正确。我认为它可能需要一个grep命令,但我认为它需要显示 644 这样的数字,而不是 rwx。我不知道如何以简单的方式做到这一点,因为这是我第一次使用 Linux 和终端。

答案1

在标准bashshell 中,你可以使用 find 命令执行此操作:

find . -perm 0644 -printf '%s %p\n'| sort -nr

这将查找具有权限的所有文件和目录0644,并使用操作格式化打印结果-printf%s表示文件大小和%p文件路径。\n表示新行。 输出通过管道传输到sort,设置为按数字顺序排序 ( -n) 和按相反顺序排序 ( -r)。

答案2

使用 Z shell ( zsh) 及其glob 限定符

print -rC1 *(.DNf:u=6,go=4:oL)

含义如下

  • . 仅匹配纯文本文件
  • D 设置当前模式的 GLOB_DOTS 选项
  • N 为当前模式设置 NULL_GLOB 选项
  • F规格匹配具有访问权限的文件规格
  • oL 按长度(以字节为单位)对结果进行排序;使用 OL 反转顺序

相关内容