【发布时间】:2013-11-03 04:34:17
【问题描述】:
ubuntu上终端命令行中这两个命令有什么区别?
find . -name "*.txt"
find . -name *.txt
【问题讨论】:
标签: shell ubuntu terminal find quotes
ubuntu上终端命令行中这两个命令有什么区别?
find . -name "*.txt"
find . -name *.txt
【问题讨论】:
标签: shell ubuntu terminal find quotes
这取决于您使用的 shell 和目录的内容。
如果你因为某种原因不幸使用 csh(或它的某些遗产,如 zsh),当你的目录中没有与模式匹配的文件时,它将拒绝执行此操作(除非你已经转向该行为关闭)。
如果有匹配模式的文件,命令会被shell扩展:
find . -name foo.txt bar.txt baz.txt
和find 将报告语法错误。除非有一个匹配的文件,否则你会得到:
find . -name foo.txt
这样只会在子目录中找到名为“foo.txt”的文件。
仅当您使用的是健全的外壳并且当前目录中没有匹配的文件时,这两个命令才会相同。
道德:不要这样做。始终使用引号。
【讨论】:
zsh 在这方面的行为也类似于 csh,但您至少可以使用 setopt NONOMATCH 将其关闭。