我整理了一个脚本来为我执行一些文件操作。我正在使用通配符运算符*
将函数应用于一种类型的所有文件,但是我没有得到一件事。我可以将unzip
所有文件放在这样的文件夹中
unzip "*".zip
但是,要在以后删除所有zip文件,我需要
rm *.zip
也就是说,它不需要引号。另一方面,如果我仅给它*,则解压缩将不起作用(警告我“文件不匹配”)。
为什么有什么不同?对我来说,这似乎是完全相同的操作。还是我不正确地使用通配符?
Unix中通配符的介绍并没有真正涉及到这一点,而且我在rm
or或zip
docs中找不到任何内容。
我在Mac(优胜美地)上使用终端。
您已经很好地说明了这种情况。最后一个难题是unzip
可以处理通配符本身:
http://www.info-zip.org/mans/unzip.html
争论
文件[.zip]
...
通配符表达式与常用的Unix shell(sh,ksh,csh)所支持的表达式相似,并且可能包含:
*匹配0个或多个字符的序列
通过引用*通配符,可以防止外壳扩展它,以便unzip
看到该通配符并根据其自身的逻辑进行扩展。
rm
相比之下,不支持通配符自身,因此试图引用一个通配符将指示rm
来寻找文件名,而不是字面星号。
unzip *.zip
不起作用的原因是unzip
的语法根本不允许多个zip文件;如果有多个参数,则期望第二个及后续参数是存档中的文件:
解压缩[-Z] [-cflptTuvz [abjnoqsCDKLMUVWX $ /:^]]文件[.zip] [文件...] [-x xfile ...] [-d exdir]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句