Command-Line
遞歸地根據大小對文件進行排序
我需要在文件夾中找到最大的文件。
如何遞歸掃描文件夾並按大小對內容進行排序?
我嘗試過使用
ls -R -S
,但這也列出了目錄。我也嘗試使用
find
.
您也可以使用 just 來執行此操作
du
。為了安全起見,我使用的是這個版本du
:$ du --version du (GNU coreutils) 8.5
該方法:
$ du -ah ..DIR.. | grep -v "/$" | sort -rh
方法分解
該命令
du -ah DIR
將生成給定目錄中所有文件和目錄的列表DIR
。這-h
將產生我更喜歡的人類可讀尺寸。如果您不想要它們,請放下該開關。我正在使用head -6
just 來限制輸出量!$ du -ah ~/Downloads/ | head -6 4.4M /home/saml/Downloads/kodak_W820_wireless_frame/W820_W1020_WirelessFrames_exUG_GLB_en.pdf 624K /home/saml/Downloads/kodak_W820_wireless_frame/easyshare_w820.pdf 4.9M /home/saml/Downloads/kodak_W820_wireless_frame/W820_W1020WirelessFrameExUG_GLB_en.pdf 9.8M /home/saml/Downloads/kodak_W820_wireless_frame 8.0K /home/saml/Downloads/bugs.xls 604K /home/saml/Downloads/netgear_gs724t/GS7xxT_HIG_5Jan10.pdf
很容易將其從小到大排序:
$ du -ah ~/Downloads/ | sort -h | head -6 0 /home/saml/Downloads/apps_archive/monitoring/nagios/nagios-check_sip-1.3/usr/lib64/nagios/plugins/check_ldaps 0 /home/saml/Downloads/data/elasticsearch/nodes/0/indices/logstash-2013.04.06/0/index/write.lock 0 /home/saml/Downloads/data/elasticsearch/nodes/0/indices/logstash-2013.04.06/0/translog/translog-1365292480753 0 /home/saml/Downloads/data/elasticsearch/nodes/0/indices/logstash-2013.04.06/1/index/write.lock 0 /home/saml/Downloads/data/elasticsearch/nodes/0/indices/logstash-2013.04.06/1/translog/translog-1365292480946 0 /home/saml/Downloads/data/elasticsearch/nodes/0/indices/logstash-2013.04.06/2/index/write.lock
反轉它,從大到小:
$ du -ah ~/Downloads/ | sort -rh | head -6 10G /home/saml/Downloads/ 3.8G /home/saml/Downloads/audible/audio_books 3.8G /home/saml/Downloads/audible 2.3G /home/saml/Downloads/apps_archive 1.5G /home/saml/Downloads/digital_blasphemy/db1440ppng.zip 1.5G /home/saml/Downloads/digital_blasphemy
不要顯示目錄,只顯示文件:
$ du -ah ~/Downloads/ | grep -v "/$" | sort -rh | head -6 3.8G /home/saml/Downloads/audible/audio_books 3.8G /home/saml/Downloads/audible 2.3G /home/saml/Downloads/apps_archive 1.5G /home/saml/Downloads/digital_blasphemy/db1440ppng.zip 1.5G /home/saml/Downloads/digital_blasphemy 835M /home/saml/Downloads/apps_archive/cad_cam_cae/salome/Salome-V6_5_0-LGPL-x86_64.run
如果要從輸出中排除所有目錄,可以使用帶有點字元的技巧。這假定您的目錄名稱不包含點,並且您要查找的文件包含點。然後你可以過濾掉目錄
grep -v '\s/[^.]*$'
:$ du -ah ~/Downloads/ | grep -v '\s/[^.]*$' | sort -rh | head -2 1.5G /home/saml/Downloads/digital_blasphemy/db1440ppng.zip 835M /home/saml/Downloads/apps_archive/cad_cam_cae/salome/Salome-V6_5_0-LGPL-x86_64.run
如果您只想要從最小到最大但前 6 個違規文件的列表,您可以反轉排序開關,drop (
-r
),並tail -6
使用head -6
.$ du -ah ~/Downloads/ | grep -v "/$" | sort -h | tail -6 835M /home/saml/Downloads/apps_archive/cad_cam_cae/salome/Salome-V6_5_0-LGPL-x86_64.run 1.5G /home/saml/Downloads/digital_blasphemy 1.5G /home/saml/Downloads/digital_blasphemy/db1440ppng.zip 2.3G /home/saml/Downloads/apps_archive 3.8G /home/saml/Downloads/audible 3.8G /home/saml/Downloads/audible/audio_books