簡體   English   中英

Bash:如何按行數對目錄中的文件進行排序?

[英]Bash: How to sort files in a directory by number of lines?

我是 bash 的新手,所以我的知識非常有限,尤其是在編寫腳本方面。 有沒有什么方法可以讓腳本讀入給定的目錄並按降序對里面的文件進行排序,從行數最多的一個到行數最少的一個?

find /some/dir -type f -print0 | wc -l --files0-from=- | sort -n -r

應該做你想做的

find程序遞歸掃描目錄/some/dir ,輸出它找到的每個文件的完整路徑( -type f表示文件不在目錄/socket/etc 中)。 output 列表使用以 nul 結尾的字符串 ( -print0 ) 以安全地處理不可靠的文件名。

該文件名列表輸入wc (wordcount),它使用( --files0-from=- )期望以 nul 終止的文件列表作為輸入,並且對於每個文件,它會在文件名前面打印行數( -l ) .

該列表依次輸入sort ,它以反向( -r )數字( -n )方式對列表進行排序; 並且由於行數在文件名前面,這意味着最長的文件(最多行)在頂部。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM