需要根据文件大小对其进行排序,并且只打印大小和文件名(无路径)。
我试着用下面的命令来达到这个目的,
找到。-类型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匹配替换为''
(基本上删除它)。