我试图找出通配符来执行文件操作。
我将这些文件放在目录中以进行测试:
file_BSD.GIF file_linux.gif file_unix
见我的ls命令,
$ ls *{.GIF,.gif}
file_BSD.GIF file_linux.gif
没关系
但是“查找”似乎并非以相同的方式工作:
$ find -name *{.GIF,.gif}
find: paths must precede expression: file_linux.gif
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]
顺便说一句,我读过“ -iname”应该同时找到大写和小写文件,但这似乎也不起作用:
$find -iname *.gif
./file_linux.gif
(这也应该找到.GIF文件,对吗?)。
find -name *{.GIF,.gif}
是错的。
此命令首先由shell扩展为 find -name *.GIF *.gif
然后进一步扩展到
find -name file_BSD.GIF file_linux.gif
# as you have only these files in directory
现在将-name file_BSD.GIF file_linux.gif
其传递给find
。这是错误的,因为没有file_linux.gif
被find接受的开关。
您需要的是此命令。
find -name '*.GIF' -or -name '*.gif'
与...相同
find -iname '*.gif'
请注意'
此处的单引号()。它的意思是*.GIF
应该直接发送查找内容,而无需任何外壳扩展。并且查找将使用此作为模式。除非您转义外壳元字符,否则必须使用单引号。在这种情况下,命令看起来像
find -iname \*.gif
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句