如何遍历zsh中某个路径下的所有文件?

Pau*_*scu 8 for-loop zsh

这是我到目前为止所拥有的:

for file in $(find /path/to/directory -type f); echo $file; done
Run Code Online (Sandbox Code Playgroud)

但我得到这个错误:

zsh: parse error near `done'
Run Code Online (Sandbox Code Playgroud)

Ada*_*hon 27

没有必要使用find.您可以尝试以下方法:

for file in /path/to/directory/**/*(.); do echo $file; done
Run Code Online (Sandbox Code Playgroud)

要么

for file in /path/to/directory/**/*(.); echo $file
Run Code Online (Sandbox Code Playgroud)

之所以你的错误是由于最后一点:在循环中运行一个命令时,你需要两个都dodone或没有.如果要在循环中运行多个命令,则必须使用它们.

  • @LarsNyström您可以将 `N` 添加到 glob 限定符,例如 `for file in /path/to/directory/**/*(N.); 回显$文件`。这会为该模式设置“NULL_GLOB”选项,该选项会从参数列表中删除该模式而不是报告错误。因此,如果不存在匹配的文件,该命令将有效地简化为“for file in ;” 回显$文件`。 (2认同)