在 OSX 上递归列出文件?

Ric*_*ard 4 osx ls

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

我知道子目录中有一些 PDF,因为例如这会产生很多结果:

ls myfolder/pdfs/*.pdf
Run Code Online (Sandbox Code Playgroud)

我所有的谷歌搜索都表明我想要ls -R,但这不会产生任何结果:

ls -R *.pdf
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

我可以通过这种方式找到一些结果:

ls -R | grep pdf
Run Code Online (Sandbox Code Playgroud)

但是我看不到文件的完整路径,这不是很有帮助。

Kus*_*nda 6

ls -R *.pdfls递归调用任何匹配的内容*.pdf(如果*.pdf当前目录中没有任何匹配项,则不会得到任何结果,如果有,则只有在它是目录时才会递归到该目录中)。 ls -R | grep pdf将向您显示ls -R结果中与正则表达式匹配的所有内容pdf,这不是您想要的。

这是你需要的:

find myfolder -type f -name '*.pdf'
Run Code Online (Sandbox Code Playgroud)

这将为您提供文件名与模式匹配的目录-type f中或myfolder目录下的所有常规文件 ( )的路径名*.pdf。需要引用该模式以保护它免受 shell 的影响。

使用zshshell(最近成为 macOS 上的默认 shell):

print -rC1 myfolder/**/*.pdf(.ND)
Run Code Online (Sandbox Code Playgroud)

这将在单个列中打印出目录中或目录下myfolder名称以.pdf,结尾的所有常规文件的路径名。匹配将包括隐藏名称。该ND在水珠预选赛对应设置nullglob,并dotglob在外壳选项bash壳(但仅限于这一个文件名匹配模式),和点使得模式只匹配常规文件(即不是目录等)