具有条件的递归ls


16

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

ls -R *.pdf

编辑

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

Answers:


22

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

执行之前*.pdf命令中的通配符会扩展bash为当前目录中的所有匹配文件。ls


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

找到就是你的答案。

find . -name \*.pdf

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

find . -iname \*.pdf

列出所有.p​​df文件,例如 foo.PDF

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

ls *.pdf */*.pdf

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

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

find . -iname \*.pdf -delete

1
万一您想要类似于ls -l命令的输出,显示文件大小,所有权,日期等,可以find与该-ls选项一起使用,例如find . -name \*.pdf -ls
RFVoltolini

2

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

现在回答另一部分。

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

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

应该做。


2
您需要引用您的glob,以防止其过早扩展。
暂停,直到另行通知。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.