7)查找到文件后并做其他处理
# 找到img结尾的文件并删除的三种方式: [root@localhost opt]# find -name "*.img" -delete [root@localhost opt]# find -name "*.img" -exec rm -rf {} \; [root@localhost opt]# find -name "*.img" | xargs rm -rf [root@localhost opt]# find -name "*.txt" -ok mv {} /mnt \; //查找.txt的文件并移动到/mnt目录下,对于每个文件执行命令之前,都会交互式要求用户确认 [root@localhost opt]# find -name "*.txt" -exec mv {} /mnt \; //查找.txt的文件并移动到/mnt目录下 复制代码
8)按时间查找:
#以“天”为单位: find -atime [+/-]# //按读取时间查找 # //表示[#,#+1) +# //表示[#+1,+∞) -# //表示[0,#) find -mtime //按文件内容改变时间查找 find -ctime //按元数据改变时间查找 #以“分钟”为单位: -amin -mmin -cmin find -mtime 10 //10天到11天,[10,11) find -mtime +10 //代表11天以上,[11,+∞) find -mtime -10 //10天以内,[0,10) 复制代码
9)比较“或”与“且”的优先级
[root@localhost opt]# find /etc/ -type d -o -type l |wc -l //查找/etc目录下的目录和链接文件并统计数量 1008 [root@localhost opt]# find /etc/ -type d -o -type l -ls |wc -l //查找/etc目录下的目录和链接文件,并显示链接文件的详细信息后统计数量 274 [root@localhost opt]# find /etc/ -type d -o -type l -a -ls |wc -l //此条命令与上条命令对比实际隐藏了一个-a(且),先执行了-type 1 -a -ls,处理动作只显示了链接文件 274 [root@localhost opt]# find /etc/ ( -type d -o -type l ) -a -ls |wc -l //如果“或”和“且”实在需要一起显示,可以使用括号和转义符 1008 复制代码
10)反向查找,使用-not或!
[root@localhost d02]# ll //查看目录下的文件及其属性 总用量 0 -rw-r--r--. 1 root root 0 2月 16 08:56 1.txt -rw-r--r--. 1 root root 0 2月 16 08:56 2.txt drwxr-xr-x. 2 root root 6 2月 16 08:55 dir0201 drwxr-xr-x. 2 root root 6 2月 16 08:55 dir0202 -rw-r--r--. 1 root root 0 2月 16 08:56 file01 -rw-r--r--. 1 root root 0 2月 16 08:56 file02 [root@localhost dir02]# find -not -type d //使用-not,查找不是文件类型不是目录的文件 ./1.txt ./2.txt ./file01 ./file02 [root@localhost d02]# find ! -type d //也可以使用!来代替-not,进行反向查找 ./1.txt ./2.txt ./file01 ./file02 [root@localhost d02]# find ! -type d ! -name "*.txt" //查找不是目录且名称不以.txt结尾的文件 ./file01 ./file02 复制代码
11)找到/mnt目录下以f开头的文件,并全部加上后缀.bak
find /mnt -name f* -exec mv {} {}.bak \; 复制代码
12)找到文件并删除的三种方式:
find -name "*.img" -delete find -name "*.img" -exec rm -rf {} \; find -name "*.img" | xargs rm -rf 复制代码
1.2 which
which 用来查看命令的位置。 在PATH变量指定的路径中,搜索某个系统命令的位置 。
命令格式:
which 命令/程序名
示例:
[root@localhost boot]# which ls //查看ls命令文件的位置 alias ls='ls --color=auto' /usr/bin/ls 复制代码
1.3 whereis
whereis 用来查找命令的具体位置。可以查看到二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。
示例:
[root@localhost ~]# whereis ls //whereis 可以查找命令具体的位置所在 ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz 复制代码
2 压缩文件
2.1 gzip和bzip2
gzip和bzip2都是压缩软件,比如windows里的好压和360压缩或微软自带的等等。
相同点:
- 只能压缩文件 , 不能压缩目录
- 默认压缩后会删除源文件。(bzip2可以使用-k保留源文件)
区别:
- gzip比bzip2的压缩速度快,而bzip2的压缩率高于gzip。
命令格式:
- 压缩:
gzip [-9] 文件名…
bzip2 [-9] 文件名...
-1~9 指定压缩级别, 数字越大压缩级别越高 。-1最快压缩,-9最大压缩 。
- 解压缩:
gzip -d .gz格式的压缩文件;
bzip2 -d .bz2格式的压缩文件
示例:
[root@localhost data]# ls f1 f2 [root@localhost data]# bzip2 f1 //压缩后源文件被删除 [root@localhost data]# ls f1.bz2 f2 [root@localhost data]# bzip2 -k f2 //使用-k保留源文件 [root@localhost data]# ls f1.bz2 f2 f2.bz2 [root@localhost data]# bzip2 -d f1.bz2 //解压缩 [root@localhost data]# ls f1 f2 f2.bz2 复制代码
2.2 归档tar 文件夹
tar (tape archive) 磁带归档,磁带便宜磁带机很贵,慢永久保存。
命令格式:
tar [选项] ... 归档文件名(压缩包名字) 源文件或目录 tar [选项] ... 归档文件名 [-C 目标目录]
选项说明:
- -c:创建(Create).tar 格式的包文件
- -x:解开.tar 格式的包文件
- -C:解压时指定释放的目标文件夹 指定目录
- -f:表示使用归档文件(一般都要带上表示使用tar)
- -v:输出详细信息(Verbose)
- -t:列出归档内容
- -j:调用 bzip2 程序进行压缩或解压
- -z:调用 gzip 程序进行压缩或解压
示例:
[root@localhost data]# tar -zcvf vm.tar.gz f1 f2 f3 //将三个文件归档后调用gzip程序压缩成vm.tar.gz f1 f2 f3 [root@localhost data]# tar -jcvf vm.tar.bz f1 f2 f3 //将三个文件归档后调用bzip2程序压缩成vm.tar.bz2 f1 f2 f3 [root@localhost data]# tar -zxvf vm.tar.gz -C /opt //将vm.tar.gz文件解压缩到/opt目录下 f1 f2 f3 [root@localhost data]# tar -tf ff.tar.gzip //列出归档内容 file01 file02 [root@localhost data]# tar -tvf /tmp/ceshi/ff.tar //详细列举归档文件中的所有文件(包括属性信息) -rwxr--r-- root/root 87 2022-01-21 17:37 file01 -rw-r--r-- user01/hr 0 2022-01-19 17:01 file02