针对不同Unix函数的相同参数的不同结果

时间:2014-02-23 07:33:41

标签: bash wildcard ls md5sum

使用这些命令后,我得到了一些不同的结果:

ls "$MYDIR/*.avi"
md5sum "$MYDIR/*.avi"

使用win-bash。前者仅列出以.avi结尾的文件,而后者则对包含.avi的所有文件进行校验和计算。这是预期的吗?我认为通配符操作应该始终如一。

1 个答案:

答案 0 :(得分:1)

因为你引用了通配符,所以它没有被shell扩展(但变量是)。这意味着你让命令决定如何处理*字符。

您希望shell在调用命令之前展开文件名:

ls "$MYDIR"/*.avi
md5sum "$MYDIR"/*.avi

如果您正在重复使用它们,您可能希望将结果存储在数组中

files=( "$MYDIR"/*.avi )
ls "${files[@]}"
md5sum "${files[@]}"