加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 找到和ls的通配符

发布时间:2020-12-13 19:40:03 所属栏目:Linux 来源:网络整理
导读:我试图找出通配符进行文件操作. 我有一个目录中的这些文件用于测试目的: file_BSD.GIF file_linux.gif file_unix 看我的ls命令, $ls *{.GIF,.gif}file_BSD.GIF file_linux.gif 哪个可以 但是“查找”似乎没有同样的作用: $find -name *{.GIF,.gif}find: pa
我试图找出通配符进行文件操作.

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读