linux – 找到和ls的通配符

前端之家收集整理的这篇文章主要介绍了linux – 找到和ls的通配符前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图找出通配符进行文件操作.

我有一个目录中的这些文件用于测试目的:

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

猜你在找的Linux相关文章