Osx

在 OSX 上遞歸列出文件?

  • December 8, 2020

我想在 OSX 上的目錄及其子目錄中查找所有 PDF 文件。

我知道子目錄中有一些 PDF,因為例如這會產生很多結果:

ls myfolder/pdfs/*.pdf

我所有的Google搜尋都建議我想要ls -R,但這不會產生任何結果:

ls -R *.pdf

我究竟做錯了什麼?

我可以通過這種方式找到一些結果:

ls -R | grep pdf

但是我看不到文件的完整路徑,這不是很有幫助。

ls -R *.pdf將對ls任何匹配的內容遞歸呼叫*.pdf(如果目前目錄中沒有匹配的內容*.pdf,您將不會得到任何結果,如果有,則只有在它是目錄時才會遞歸到其中)。 ls -R | grep pdf將顯示ls -R結果中與正則表達式匹配的所有內容pdf,這不是您想要的。

這就是你需要的:

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

這將為您提供文件名與模式匹配的目錄-type f中或目錄下的所有正常文件 () 的路徑名。需要引用該模式以保護它免受外殼的影響。myfolder``*.pdf

使用zshshell(最近成為 macOS 上的預設 shell):

print -rC1 myfolder/**/*.pdf(.ND)

這將在單個列中列印出目錄中或目錄下myfolder名稱以 結尾的所有正常文件的路徑名。.pdf匹配將包括隱藏的名稱。glob 限定符中的NandD對應於在 shell 中設置nullglobdotglobshell 選項bash(但僅適用於這個單一的通配模式),點使模式只匹配正常文件(即不匹配目錄等)

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