脚本文件的查找
Which命令
which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。 语法: which [-a] command -a: 将所有由path目录中可以找出的命令均列出
例子:
which ifconfig
which which #找出which的文件名
文件查找
whereis
whereis命令只能用于程序名的搜索,如果省略参数,则返回所有信息。 语法:whereis [-bmsu] 文件或目录名 -l : 可以列出whereis 会去查询的几个主要目录 -b: 只找二进制格式文件 -m: 只找在说明文件manual路径下文件 -s: 只找source源文件 -u: 找不在上面三个项目中的其他特殊文件
例子:
whereis ifconfig #找ifconfig文件名
whereis -m passwd #只有在man里面文件显示出来
find 命令
find,用于在文件树中查找文件并作相应的处理 -name:按照文件名查找文件 -perm:按照文件权限查找文件 -user:按照文件属主来查找文件 -size:按照指定的文件大小查找文件【+n:大于,-n:小于,n:等于】 -group:按照文件所属的组来查找文件 -mtime<-n><+n>:按照文件更改时间来查找文件,-n表示n天之内,+n表示n天以前 -newer file1 file2:查找更改时间在file1和file2之间的文件
例子:
find / -name xitai #查找全系统名为xitai的文件
find -mtime -2 #查找48小时修改过的文件
find /usr/local -size +100M #查找大于100M的文件
find -type d | sort #查找当前所有目标目录并排序
find /usr/local/apache-tomcat-admin/ -perm 755 #查找指定目录下权限为755的文件
find /etc/ -newer /etc/passwd #查找/etc/比/etc/passwd要新的文件
locate 命令
locate命令其实是"find -name"的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库(/var/lib/locatedb),这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。 updatedb:第一次运行前,创建locate数据库 参数: -i: 忽略大小写 -c:不输出文件名,仅计算文件数量 -l :仅输出几行 -r: 后面可接正则表达式 -S: 输出数据库文件相关信息
例子:
locate -l 5 passwd
如果报错:
先安装 yum -y install mlocate 又报错:
初始化 updatedb locate -l 5 passwd
locate -S
type
type命令其实不能算查找命令,它是用来区分某个命令到底是由shell自带的,还是由shell外部的独立二进制文件提供的。如果一个命令是外部命令,那么使用-p参数,会显示该命令的路径,相当于which命令。
例子:
type -p ifconfig
grep
用于过滤/搜索指定字符串。可以使用正则表达式,能配合多种命令使用。 用法:grep 【选项】 查找内容 源文件 -A:显示符合的行及之后的内容 -B:显示符合的行及之前的内容 -C:显示符合的行及前后的内容 -c:计算符合的行数目 -n:显示匹配行和行号 -i:忽略大小写
规则表达式
^:'^grep'表示匹配所有以grep开头的行 '表示匹配所有以grep结尾的行 .:'gr.p'表示匹配'gr'后面接任意字符然后是'p' :'grep'表示匹配一个或多个空格后紧跟grep的行 []:[Gg]rep表示匹配Grep与grep [^]:[^A-FH-Z]rep表示匹配不以A-F、H-Z开头并紧跟rep的行
例子:
grep -n 'cc' aa.txt grep -in 'DD' aa.txt grep -vn 'cc' aa.txt