文章目录
一、简介
which :命令查找
find: 文件查找,针对文件名
locate:文件查找,依赖数据库
二、命令文件查找which
[root@localhost ~]#which ls //查找ls 命令的位置
alias ls='ls --color=auto'
/usr/bin/ls
或者
[root@localhost ~]# whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
三、locate
[root@localhost ~]# locate hosts //locate查找文件hosts文件
[root@localhost ~]# updatedb //更新locate数据库
四、find
语法:
find [path...] [options] [expression] [action]
命令 路径 选项 表达式 动作
项目 | Value |
---|---|
-name filename | 按名称查找 |
-perm | 按执行权限来查找 |
-user username | 按文件属主来查找 |
-group groupname | 按组来查找 |
-mtime -n +n | 按文件更改时间来查找文件,-n指n天以内,+n指n天以前 |
-atime -n +n | 按文件访问时间来查找文件,-n指n天以内,+n指n天以前 |
-ctime -n +n | 按文件创建时间来查找文件,-n指n天以内,+n指n天以前 |
-nogroup | 查无有效属组的文件,即文件的属组在/etc/groups中不存在 |
-nouser | 查无有效属主的文件,即文件的属主在/etc/passwd中不存 |
-type b/d/c/p/l/f | 查是块设备、目录、字符设备、管道、符号链接、普通文件 |
-size n[c] | 按文件大小查找的文件 |
-mount | 查文件时不跨越文件系统mount点 |
-follow | 如果遇到符号链接文件,就跟踪链接所指的文件 |
-prune | 忽略某个目录 |
1.按文件名
find /etc -name "hosts"
find /etc -iname "hosts"
find /etc -iname "hos*" //-i忽略大小写
2.按文件大小
find /etc -size +5M 文件大小>5M
find /etc -size 5M 文件大小为5M
find /etc -size -5M 文件大小<5M
find / -size +3M -a -size -5M 查找/下面大于3M而且小于5M的文件
find / -size -1M -o -size +80M 查找/下面小于1M或者大于80M的文件
find / -size -3M -a -name "*.txt" 查找/ 下面小于3M而且名字是.txt的文件
注:
-a:add
-o:or
3.按时间查找
按时间找(atime,mtime,ctime)
-atime= access访问时间
-mtime = modify改变时间 内容修改时间会改变
-ctime =change修改时间 属性修改时间会改变
-amin #分钟
-mmin
-cmin
find /opt -mtime +5 修改时间5天之前
find /opt -atime +1 访问时间1天之前
find . -mtime -2 修改时间2天之内
find . -amin +1 访问时间在1分钟之前
find /opt -amin -4 访问时间在4分钟之内
find /opt -mmin -2 修改时间在2分钟之内
4.按文件属主、属组找
查找当前目录及子目录下属于dba用户组的文件:
find . -group dba -print
查找当前目录及子目录下没有有效用户组的文件:
find . -nogroup -print
5.按文件类型
find /dev -type f f普通文件
find / -type f -size -1M -o -name "*.txt"
find /dev -type d d目录
find /etc/ -type d -name "*.conf.d"
find /etc -type l l链接
find /dev -type b b块设备
find /dev/ -type b -name "sd*"
注:f普通文件 b块设备文件 d目录 l链接
6.按文件权限
find . -perm 644 .是当前目录 精确查找644
find /usr/bin -perm -4000 包含set uid
find /usr/bin -perm -2000 包含set gid
find /usr/bin -perm -1000 包含sticky
7.找到后处理的动作 ACTIONS
找到后默认是显示文件
find . -perm 715 -print 文件名
find . -perm 715 -ls 文件属性
找到后删除
find /etc -name "775*" -delete
找到后复制(-exec为execution执行)
find /etc -name "ifcfg*" -exec cp -rvf {} /tmp \;
{}为前面查找到的内容,\; 格式
扩展
-exec:参数是一个一个传递的,传递一个参数执行一次命令。
xargs:将前一个命令的标准输出传递给下一个命令,作为它的参数转换成下一个命令的参数列表。
===============
1、exec 每处理一个文件或者目录,它都需要启动一次命令,效率不好;
2、exec 格式麻烦,必须用 {} 做文件的代位符,必须用 \来转义; 作为命令的结束符,书写不便。
3、xargs不能操作文件名有空格的文件;
综上,如果要使用的命令支持一次处理多个文件,并且也知道这些文件里没有带空格的文件,
那么使用 xargs比较方便; 否则,就要用 exec了。
[root@youngfit ~]# touch {1..10000}.txt
[root@youngfit ~]# time find ./ -type f -name '*.txt' |xargs rm -rvf
real 0m0.203s
user 0m0.016s
sys 0m0.186s
[root@youngfit ~]# touch {1..10000}.txt
[root@youngfit ~]# time find ./ -type f -name '*.txt' -exec rm -rvf {} \;
real 0m8.074s
user 0m3.717s
sys 0m4.294s
一、xargs的使用
(1)将前一个命令的标准输出传递给下一个命令,作为它的参数,xargs的默认命令是echo,空格是默认定界符
(2)将多行输入转换为单行
二、exec的使用
exec参数是一个一个传递的,传递一个参数执行一次命令。
总结:xargs一次将参数传给命令,可以使用-n控制参数个数;exec参数是一个一个传递的,传递一个参数执行一次命令。
[root@youngfit tmp]# find ./ -type f -name 'file*' |xargs -n 1 -i rm -rvf {}
已删除"./file1"
已删除"./file2"
已删除"./file4"
已删除"./file5"
五、文件打包及压缩
简介:
tar命令是Unix/Linux系统中备份文件的可靠方法,几乎可以工作于任何环境中,它的使用权限是所有用户。建议针对目录
window打包压缩工具:
结尾: .rar .zip
打包工具:winrar zip 7zip 好压
linux打包压缩工具:
结尾:.tar.gz .tar.bz2 .zip
工具:gzip和tar(打包)
bzip2(只压缩)
1、打包
语法:tar 选项 压缩包名称 源文件
[root@localhost ~]#tar -cf etc.tar /etc
[root@localhost ~]#tar -czvf etc-gzip.tar.gz /etc/ //z是gzip
[root@localhost ~]#tar -cjf etc-bzip.tar.bz /etc/ //j是bzip
[root@localhost ~]#tar -cJf etc-xzip.tar.xz /etc/ //J是xzip
[root@localhost ~]#ll -h etc*
-rw-r--r--. 1 root root 11M 10月 14 10:07 etc-gzip.tar.gz
-rw-r--r--. 1 root root 8.9M 10月 14 10:08 etc-bzip.tar.bz
-rw-r--r--. 1 root root 7.6M 10月 14 10:08 etc-xzip.tar.xz
c :create 创建
v :verbose 详细信息
f :file 文件
注:压缩速度和压缩体积成反比。
2、解压
查看(并没有解压)
[root@localhost ~]#tar -tf etc.tar //t查看f文件名
解压缩
[root@localhost ~]# tar xf etc3.tar.xz
[root@localhost ~]# tar -xvf etc2.tar.bz2 -C /tmp //-C重定向到/tmp目录
x: extract 解压缩 解包
-C: 指定解包路径