我试图找出通配符进行文件操作.
我有一个目录中的这些文件用于测试目的:
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抛出,找到-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应该被发送,没有任何shell扩展.并找到将使用它作为模式.这个单引号是必要的,除非你转义shell元字符.在这种情况下,命令看起来就像
find -iname \*.gif
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。