需要根据文件大小对其进行排序,并且只打印大小和文件名(无路径)。
我试着用下面的命令来达到这个目的,
找到。-类型f-exec du-h{}+sort-r-h
但结果是这样的,

6.0K ~/Documents/Folder/B/File2.txt

6.0K ~/Documents/Folder/KK/KB/File12.txt

4.0K ~/Documents/Folder/A/File1.txt

但我希望输出的文件名不带目录前缀,比如,
6.0K File2.txt

6.0K File12.txt

4.0K File1.txt

注意:我的目录中的所有文件名都有唯一的名称,在我的情况下不会有任何重复的文件名。我不知道怎样才能达到这个结果。有人能帮我吗?

最佳答案

你可以试着用awk来完成它:

find . -type f -exec du -h {} + | sort -r -h | awk '{sub(".*\/","",$2)}1'

它只是在/
awk按空格分隔行,在您的示例中:
$1         $2

6.0K      ~/Documents/Folder/B/File2.txt

6.0K      ~/Documents/Folder/KK/KB/File12.txt

4.0K      ~/Documents/Folder/A/File1.tx

因此,当您想保留第一列时,只需将regex(.*\/)应用于第二列。这个正则表达式匹配到斜杠的所有内容(我使用\/,因为您需要转义/)。然后,我将regex匹配替换为''(基本上删除它)。

07-26 08:25