![如何对具有特定权限的文件按大小进行排序?](https://linux22.com/image/943434/%E5%A6%82%E4%BD%95%E5%AF%B9%E5%85%B7%E6%9C%89%E7%89%B9%E5%AE%9A%E6%9D%83%E9%99%90%E7%9A%84%E6%96%87%E4%BB%B6%E6%8C%89%E5%A4%A7%E5%B0%8F%E8%BF%9B%E8%A1%8C%E6%8E%92%E5%BA%8F%EF%BC%9F.png)
我需要按大小对所有具有 644 个权限的文件进行排序。
到目前为止,我尝试使用ls
命令来查找和排序,但似乎不正确。我认为它可能需要一个grep
命令,但我认为它需要显示 644 这样的数字,而不是 rwx。我不知道如何以简单的方式做到这一点,因为这是我第一次使用 Linux 和终端。
答案1
在标准bash
shell 中,你可以使用 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 反转顺序