如何在shell中的recursion目录中列出特定types的文件?

我们如何find特定types的文件,即嵌套目录中的doc pdf文件。

命令我试过了:

$ ls -R | grep .doc 

但是如果有一个像alok.doc.txt这样的文件名,这个命令也会显示出来,这显然不是我想要的。 我应该使用什么命令呢?

如果你更喜欢“ls”和“grep”,你可以在grep命令中用正则表达式来做你想做的事情(结尾'$'字符表示.doc必须在行尾,这样会排除“file.doc.txt”):

 ls -R |grep "\.doc$" 

有关在man中使用正则表达式的更多信息。

ls命令的输出主要是供人读取的。 对于高级查询自动化处理,您应该使用更强大的find命令:

 find /path -type f \( -iname "*.doc" -o -iname "*.pdf" \) 

就好像你有bash 4.0 ++

 #!/bin/bash shopt -s globstar shopt -s nullglob for file in **/*.{pdf,doc} do echo "$file" done 

一些可以使用的其他方法:

echo *.{pdf,docx,jpeg}

stat -c %n * | grep 'pdf\|docx\|jpeg'

同样,如果你喜欢使用通配符* (不像正则表达式的建议),你可以使用ls-l两个-l来列出每行一个文件(比如grep)和-R标志。 然后你可以用*.doc IE来指定要搜索的文件

 ls -l -R *.doc 

或者如果你想要它在较少的行上列出文件。

 ls -R *.doc