带条件的递归 ls

Tom*_*mba 21 bash ls recursive ubuntu

为什么我不能使用这样的命令来查找目录和子目录中的所有 pdf 文件?我该怎么做?(我在 ubuntu 中使用 bash)

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

编辑

那么我将如何删除所有这些文件?

Oll*_*lli 25

为什么我不能使用这样的命令来查找目录和子目录中的所有 pdf 文件?

通配符*.pdf在命令被扩展bash到所有匹配的文件在当前目录中,之前执行ls


我该怎么做?(我在 ubuntu 中使用 bash)

找到就是你的答案。

find . -name \*.pdf
Run Code Online (Sandbox Code Playgroud)

是 pdf 文件的递归列表。-iname不区分大小写匹配,所以

find . -iname \*.pdf
Run Code Online (Sandbox Code Playgroud)

列出所有 .pdf 文件,包括例如 foo.PDF

此外,您可以将 ls 用于有限数量的子文件夹,例如

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

在子文件夹中查找所有 pdf 文件(匹配 bar/foo.pdf,不匹配 bar/foo/asdf.pdf,不匹配 foo.PDF)。

如果要删除通过 find 找到的文件,可以使用

find . -iname \*.pdf -delete
Run Code Online (Sandbox Code Playgroud)

  • 万一你想要一个类似于 `ls -l` 命令的输出,显示文件大小、所有权、日期等,你可以使用带有 `-ls` 选项的 `find`,例如 `find。-name \*.pdf -ls` (2认同)