Linux系统学习笔记:find -name命令的坑与填坑

学习Linux的时候,阅读的教程的作者特别提醒到:Linux系统下的find命令虽然很强大,但是新手用起来很容易出问题。当时我还不信:不就是个查找吗?结果真到用的时候才发现,find的用法其实真的挺“坑”的。(我用的CentOS 7)

操作目的很简单:找到主目录(~)下的所有.html后缀的文件,.c后缀的文件等。

这里我就把我所有出过的错分享出来了,大家有则共勉,无则笑笑。

OK,我们分析一下,.html文件是吧,正则匹配find ~ *.html走起!

然后就出错了……好吧我们仔细读一下教材,find用法明确规定,查找特定名称(包括正则匹配)的文件必须使用-name参数……这可不是英语造句子,直接find xxx是没用的!

好吧,

$ find ~ -name *.html

OK,没问题,再看看教材实例:

下面的命令查找主目录下文件名为sample或者以.old结尾的文件:

$ find ~ \( -name sample -o -name '*.old' \)

原来\( )\功能是这么跟正则匹配一起用的啊,我试试

$ find ~ -name \(*.html\)
find: 路径必须在表达式之前: *.html

好吧,我又写错了,-name应该放在转义括号内

$ find ~ \(-name *.html\) 
find: ‘(-name’: 没有那个文件或目录
find: ‘*.html)’: 没有那个文件或目录

WTF?这又是什么错误?

原来教程上写着,\(和\)以及逻辑参数-o等前后都要加括号,再来

$ find ~ \( -name '*.html' \) 

终于成功了。

顺便说一下,文件名可以不加引号,结果一样(我是按照教程示例写的)。

 

 

 

 

你可能感兴趣的:(Linux系统学习笔记:find -name命令的坑与填坑)