brysj22952 avatar

Linux find命令使用心得(Linux find cmd use experience)

brysj22952

Published: 04 Feb 2018 › Updated: 04 Feb 2018

Linux find命令使用心得(Linux find cmd use experience)

问题

我使用的是Centos系统,我查找一个指定名字的目录,使用下面的命令:
find / -path *site-package*
但是实际上没有达到目的,有两个问题,一个是有时候能找到,有时候找不到;另外一个问题是找到的不仅仅是目录,还有文件。

解决方案

搜索内容用引号括起来

通过查阅相关资料,找到问题所在。首先,搜索内容最好用单引号或者双引号括起来。因为bash会自动把*号展开,例如,*.txt,如果有1.txt、2.txt两个符合条件的,会自动展开为1.txt 2.txt这样的字符串,就相当于原有命令展开为1.txt 2.txt这样的参数,就会出现稀奇古怪的问题。

例如,你如果使用echo *.txt命令,就会显示1.txt、2.txt字符串,如果使用echo '*.txt',则会显示'*.txt'原始字符串。

Path参数的含义

path参数并不是查找目录的意思,在讲述它的意思之前,我们先简单学习一下find命令的用法。我们参考一下这篇文章《Linux find运行机制详解》,我觉得写得很不错。

find命令的格式如下:find [path...] [expression_list]

其中find后面紧跟的是要搜索的路径列表,可以有多个,比如 \abc .\xxx等。

后面的表达式就是各种过滤条件了,比较常用的有:

'-name':表示对文件名过滤,但是这个文件名是bassname,不含全路径名,比如\a\b.txt文件,这里的文件名是b.txt。

'-path':表示对文件全名过滤,包括路径,比如\a\b.txt,就是对'\a\b.txt'这个字符串过滤。所以就可以解释为什么搜索到的结果包括了文件名了。

'-type d/f/l':那么如果我想只获取目录,怎么办呢?这时就可以使用-type参数了,d表示目录,f表示文件,l表示链接文件。

Leave Linux find命令使用心得(Linux find cmd use experience) to:

Written by

Read more #cn posts


Best Posts From brysj22952

We have not curated any of brysj22952's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.

More Posts From brysj22952