带条件的递归 ls

带条件的递归 ls

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

ls -R *.pdf

编辑

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

答案1

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

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


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

找到你的答案。

find . -name \*.pdf

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

find . -iname \*.pdf

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

另外,你可以使用 ls 查看有限数量的子文件夹,例如

ls *.pdf */*.pdf

查找子文件夹中的所有 pdf 文件(与 bar/foo.pdf 匹配,而不是 bar/foo/asdf.pdf,也不与 foo.PDF 匹配)。

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

find . -iname \*.pdf -delete

答案2

使用 find 代替 ls

find . -name '*.pdf'

答案3

正如其他人所说,找到就是答案。

现在来回答另一部分。

  • 那么我该如何删除所有这些文件呢?

    查找 . -iname *.pdf -exec rm {} \;

應該做。

相关内容