Ls

為什麼 ls -R 不遞歸列出模式的文件?

  • March 27, 2021

ls -R遞歸列出文件並ls *.pdf列出所有以 . 結尾的文件.pdf。我的問題是為什麼ls不將這 2 個函式合併為 1 個函式,例如ls -R \*.pdf遞歸查找 PDF 文件。當然,還有find其他的。我好奇。謝謝

因為由 shell 擴展為目前工作目錄中的所有 .pdf 文件,並且它與您希望在任何子目錄中查看所有 .pdf 文件*.pdf的命令無關;要完成這項工作,您需要啟用 shell (in )選項並使用它來查看/擴展任何子目錄以及目前工作目錄,如下所示:ls``*.pdf``bash``globstar``**``*.pdf

shopt -s globstar; ls -d -- **/*.pdf

此外,使用 using ls -R \*.pdf,您正在尋找單個文件匹配的文字*.pdf,並且-R這裡沒有尋找子目錄的效果(除非該*.pdf文件實際上是一個目錄)並且它只是用於遞歸地列出子目錄。有了它,您可以使用ls組合grep來過濾 .pdf 文件。

ls -bR |grep '\.pdf$'

但這並不能保證它只會報告文件,但也會報告具有相同結尾模式的目錄。

好吧,正如您所說並且知道,最好的選擇是使用find命令。

find . -type f -name '*.pdf'

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