这是我参与更文挑战的第4天,活动详情查看: 更文挑战
文件搜索命令
find
- 命令名称:find
- 执行权限:所有用户
- 功能:文件搜索
- 语法:
find [搜索范围] [匹配条件]
示例1,根据文件名查找:
-
在目录/etc中查找文件init:
find /etc -name init
-
与windows的区别是,linux搜索init只会出现名字为init的文件,但是windows中,还会搜索到名字包含init的文件。
-
可以使用
-etec/-ok
来对搜索结果执行操作,如在/etc下查找inittab文件并显示其详细信息find /etc -name inittab -exec ls -l {} \;
- {}表示对结果做一个替换
- \表示转义符
- ;表示结束
-
-
如果想与windows一样,也搜出包含有init的文件,做法如下:
find /etc -name *init*
- 使用通配符
-
使用
-iname
来搜索可以不区分大小写find /etc -iname init???
- 文件initabc和INITABC都会被搜索到
- 使用正则表达式来搜索
示例2:根据文件大小查找:
-
在根目录下查找大于100MB的文件
find / -size +204800
-
补充几个查询条件(并非只能用于size):
- -a:两个查询条件同时满足
- -o:两个条件满足任意一个即可
- 如:在/etc下查找大于80MB小于100MB的文件
find /etc -size +163840 -a -size -204800
-
-type:根据文件类型查找
-
f:文件
-
d:目录
-
l:软链接文件
-
如:在/etc下查找文件名由init开头,且类型是目录的文件
find /etc -name init* -a type -d
-
-
-inum:根据i节点查找
-
每个文件都有个i节点,通过
ls -i
可以查看。 -
比如有一个文件的i节点为31531
find . -inum 31531 -exec rm {} \;
-
示例3:根据所有者查找:
-
在/home下查找所有者为AAA的文件:
find /home -user AAA
- -group:根据所属组查找
示例4:根据修改时间查找:
-
在/etc下查找5分钟内被修改过属性的文件和目录
find /etc -cmin -5
- 关于
-5
:减号表示多长时间之内,加号表示超过多长时间 - -cmin:根据文件属性查找(change)
- 比如通过
ls -ld /home/AAA
可以看到文件属性
- 比如通过
- 补充其他查找选项:
- -amin:根据访问时间查找(access)
- -mmin:根据文件内容查找(modify)
- 关于
locate
- 命令名称:locate
- 执行权限:所有用户
- 功能:在文件资料库中查找文件
- 语法:
locate 文件名
注1:locate搜索会很快,因为它将文件定期的收集到一个文件资料库中。所以他在搜索时直接在资料库中搜索,因此比find快。
注2:有时候locate会找不到文件,因为文件还未被搜录到文件资料库中。可以使用updatedb来更新资料库。
注3:如果文件在/tmp目录下,locate是找不到的,即使你使用了updatedb
注4:如果想在查找的时候不区分大小写,可以添加使用
-i
。如:locate -i helloworld.txt
which
- 命令名称:which
- 执行权限:所有用户
- 功能:搜索命令所在目录及别名信息
- 语法:
which 命令
注1:存放于
/bin
/usr/bin
下的命令是所有用户可以使用的命令。存放于/sbin
/usr/sbin
下的命令是root用户可以使用的命令。
示例:
# 查找cp放在哪一个文件下
which cp
# 结果:/usr/bin/cp
# 查找useradd放在哪一个文件下
which useradd
# 结果:/usr/sbin/useradd
whereis
- 命令名称:whereis
- 执行权限:所有用户
- 功能:搜索命令所在目录及帮助文档路径
- 语法:
whereis [命令名称]
grep
- 命令名称:grep
- 执行权限:所有用户
- 功能:在文件中搜寻字串匹配的行并输出
- -i:不区分大小写
- -v:排除指定字串
- 语法:
grep -iv [指定字串] [文件]
示例
root@atomy-virtual-machine:/home/atomy/桌面# grep DisableMBIMGlobal /etc/usb_modeswitch.conf
DisableMBIMGlobal=0
注1:文件中很多时候是有#注释的,注释的代码是不生效的。我们可以使用-v排除某个指定字符,如
grep -v # /etc/usb_modeswitch.conf
但是你会发现好像找不到信息出来。因为文件中#很多,夹在中间的有效行也被排除了。可以使用
grep -v ^# /etc/usb_modeswitch.conf
^
是正则表达式的一种,表示以什么开头。grep真正强大的地方在于此,grep与正则表达式配合能很好的找到有效信息。
帮助命令
man
- 命令名称:man
- 英文原意:manual
- 执行权限:所有用户
- 功能:获得帮助信息
- 语法:
man [命令或配置文件]
- (空格) 或f 翻页
- b 向下翻页
- (Enter) 换行
- q或Q 退出
示例:查看ls命令的帮助信息
man ls
示例:查看配置文件services的帮助信息
man services
help
- 命令名称:help
- 执行权限:所有用户
- 功能:获得Shell内置命令的帮助信息
- 语法:
help 命令
示例:查看umask命令的帮助信息
help umask
解压缩命令
gzip
- 命令名称:gzip
- 英文原意:GNU zip
- 执行权限:所有用户
- 功能:压缩文件
- 压缩后文件格式:.gz
- 语法:
gzip [文件]
gunzip
- 命令名称:gunzip
- 英文原意:GNU unzip
- 执行权限:所有用户
- 功能:解压缩.gz的压缩文件
- 只能压缩文件不能压缩目录
- 语法:
gunzip [压缩文件]
tar
-
命令名称:tar
-
执行权限:所有用户
-
语法:
tar 选项[-zcf] [压缩后文件名] [目录]
-
功能:打包目录,压缩后文件格式:.tar.gz
- -c: 打包
- -v: 显示详细信息
- -f: 指定文件名
- -z: 打包同时压缩
- -x: 解包
示例:压缩
我在tmp目录下的tartest文件夹中有一个文件tartext.txt。我现在压缩目录。
将目录tartest打包并压缩为.tar.gz文件
tar -zcf tartest.tar.gz tartest
示例:解压
root@atomy-virtual-machine:/tmp# tar -zxvf tartest.tar.gz
tartest/
tartest/tartest.txt
zip
- 命令名称:zip
- 执行权限:所有用户
- 功能:压缩文件或目录
- 压缩后文件格式:.zip
- 语法:
zip 选项[-r] [压缩后文件名] [文件或目录]
- -r 压缩目录
示例:压缩文件
zip tartest.txt.zip tartest.txt
示例:压缩目录
zip tartest.zip tartest
unzip
- 命令名称:unzip
- 执行权限:所有用户
- 功能:解压.zip的文件
- 语法:
unzip [压缩文件]
bzip2/bunzip2
-
语法:
bzip2 选项 [-k] [文件]
- -k 产生压缩文件后保留原文件
- 压缩后文件格式:.bz2
-
语法:
bunzip2 选项 [-k] [压缩文件]
- -k 解压缩后保留原文件