1

在 bash 中,如何在目录及其子目录中搜索特定类型的文件(比如“*.txt”)。然后按大小降序显示文件及其大小和完整路径。

我尝试了以下但它不起作用。

find . -type f -name "*.txt" -print0 | ls -sS

我怎样才能做到这一点?

4

3 回答 3

4

您可以使用 GNU find 的 printf 选项来完成此操作:

find "$PWD" -type f -name '*.txt' -printf "%s %h/%f\n" | sort -rg

要以 KB 而非字节为单位显示大小:

find "$PWD" -type f -name '*.txt' -printf "%k %h/%f\n" | sort -rg
于 2012-08-01T03:19:22.557 回答
2
find . -type f -name "*.txt" -print0 | xargs -0 ls -sS

除非有大量匹配文件,否则应该可以工作(man xargs(1) 查看默认值是什么)

如果 100% 正确,Swiss 在下面的评论xargs -0是您使用的方法find -print0

于 2012-08-01T03:06:43.313 回答
1
find . -type f -name "*.txt" | xargs -i{} stat {} --format "%012s %n" | sort -r

以字节为单位给出大小。

于 2012-08-01T03:08:53.027 回答