这是我到目前为止所拥有的:
for file in $(find /path/to/directory -type f); echo $file; done
但我得到这个错误:
zsh: parse error near `done'
Adaephon.. 27
没有必要使用find
.您可以尝试以下方法:
for file in /path/to/directory/**/*(.); do echo $file; done
要么
for file in /path/to/directory/**/*(.); echo $file
该**
模式递归匹配多个目录.所以a/**/b
匹配b
下面的任何地方a
.它基本上与列表find a -name b
产生匹配.
(.)
是一个glob限定符,告诉zsh只匹配普通文件.它相当于-type f
选项find
.
你真的不需要双引号,$file
因为zsh不会在替换时将变量拆分成单词.
第一个版本是for
-loop 的常规形式; 第二个是没有和的短形式do
done
之所以你的错误是由于最后一点:在循环中运行一个命令时,你需要两个都do
和done
或没有.如果要在循环中运行多个命令,则必须使用它们.
没有必要使用find
.您可以尝试以下方法:
for file in /path/to/directory/**/*(.); do echo $file; done
要么
for file in /path/to/directory/**/*(.); echo $file
该**
模式递归匹配多个目录.所以a/**/b
匹配b
下面的任何地方a
.它基本上与列表find a -name b
产生匹配.
(.)
是一个glob限定符,告诉zsh只匹配普通文件.它相当于-type f
选项find
.
你真的不需要双引号,$file
因为zsh不会在替换时将变量拆分成单词.
第一个版本是for
-loop 的常规形式; 第二个是没有和的短形式do
done
之所以你的错误是由于最后一点:在循环中运行一个命令时,你需要两个都do
和done
或没有.如果要在循环中运行多个命令,则必须使用它们.