DOS“dir /s /b 文件名”的 Linux 等价物是什么?

mac*_*nir 17 ls

列出当前目录中或下方与“文件名”匹配的所有文件/目录。

Mik*_*kel 29

直接的等价物是

find . -iname <filename>
Run Code Online (Sandbox Code Playgroud)

这将列出<filename>当前目录和任何子目录中调用的所有文件和目录,忽略大小写。

如果您的 find 版本不支持-iname,您可以-name改用。需要注意的是不像-iname-name是区分大小写的。

如果您只想列出名为 的文件<filename>而不是目录,请添加-type f

find . -iname <filename> -type f
Run Code Online (Sandbox Code Playgroud)

如果你想使用通配符,你需要在它周围加上引号,例如

find . -iname "*.txt" -type f
Run Code Online (Sandbox Code Playgroud)

否则外壳会扩展它。

正如其他人指出的那样,您还可以这样做:

find . | grep "\.txt$"
Run Code Online (Sandbox Code Playgroud)

grep 将打印基于正则表达式的行,它比通配符更强大,但具有不同的语法。

查看man findman grep了解更多详情。

  • 如果 `&lt;filename&gt;` 包含通配符,请使用引号将其括起来,例如 `find 。-name '*.txt'`。 (3认同)
  • 在命令行环境中使用 `&lt;filename&gt;` 作为用户输入的标记是一个坏习惯,其中 `&lt; 和 &gt;` 大部分时间都有特定的含义。我建议只使用 `filename`,也许 FILENAME 来强调它。大多数人会理解,而那些不会的人可能会在不理解他们不应该击中小于或大于号时造成伤害。 (2认同)
  • `&lt;filename&gt;` 是很多 UNIX 文档中的约定,所以我认为人们了解它很有用,但我同意 `FILENAME` 可能更容易理解。 (2认同)

Sha*_*off 8

一些shell允许ls **/filename,这很方便。