为什么“ls --all --recursive -1 *.htm*”只列出当前目录中的文件?

为什么“ls --all --recursive -1 *.htm*”只列出当前目录中的文件?

在终端中我执行以下命令:

ls --all --recursive -1 *.htm*

或这个:

ls -a -R -1 *.htm*

但它只列出了当前目录中的 html 文件...?!

根据“man ls”,该选项具有此功能:

       -R, --recursive
              list subdirectories recursively

我从 Krusader Search 中得知子文件夹中大约有 40 个 html 文件...但是为什么“ls”没有列出它们?

我想补充一点,我刚刚发现以下命令可以完成这项工作:

find . -name '*.htm*'

答案1

它的工作方式与你预期的略有不同。ls将列出你在命令行上指定的文件和目录。使用-R--recursive选项,它将进入命令行上指定的任何目录。

当前目录中没有匹配的目录*.htm*,只有文件。因此,仅列出匹配的文件。

find可能是最适合递归查找文件的工具,但也可以使用和来ls -R完成grep

ls -R | grep -E '\.htm.*$' 

grep这里使用正则表达式。

相关内容