Ls

ls 的參數列表太長

  • March 14, 2022

嘗試訪問ls *.txt | wc -l包含許多文件的目錄時出現以下錯誤:

-bash: /bin/ls: Argument list too long

此“參數列表”的門檻值是否取決於發行版或電腦的規格?通常,我會將如此大結果的結果傳遞給其他一些命令(wc -l例如),所以我不關心終端的限制。

您的錯誤消息參數列表太長來自***.***ls *.txt

這個限制對二進製程序和核心都是安全的。有關它的更多資訊,以及它的使用和計算方式,請參閱ARG_MAX,新程序的最大參數長度。

管道尺寸沒有這樣的限制。所以你可以簡單地發出這個命令:

find -type f -name '*.txt'  | wc -l

注意:在現代 Linux 上,文件名中的怪異字元(如換行符)將使用lsor之類的工具進行轉義find,但仍從*******顯示。如果您使用的是舊 Unix,則需要此命令

find -type f -name '*.txt' -exec echo \;  | wc -l

NB2:我想知道如何創建一個名稱中帶有換行符的文件。一旦你知道訣竅,這並不難:

touch "hello
world"

引用自:https://unix.stackexchange.com/questions/38955