find命令可以加-exec 用于查找到结果之后的后续操作,命令中{}表示的是查找到的结果,命令要以\;
结尾才可以
[root@localhost ~]# mkdir /tmp/testdir
[root@localhost ~]# cd /tmp/testdir/
[root@localhost testdir]# touch {1..10}.txt
[root@localhost testdir]# find /tmp/testdir/ -type f -exec ls -l {} \; #查看查找到的文件
-rw-r--r-- 1 root root 0 Jun 29 17:07 /tmp/testdir/1.txt
-rw-r--r-- 1 root root 0 Jun 29 17:07 /tmp/testdir/2.txt
-rw-r--r-- 1 root root 0 Jun 29 17:07 /tmp/testdir/3.txt
-rw-r--r-- 1 root root 0 Jun 29 17:07 /tmp/testdir/4.txt
-rw-r--r-- 1 root root 0 Jun 29 17:07 /tmp/testdir/5.txt
-rw-r--r-- 1 root root 0 Jun 29 17:07 /tmp/testdir/6.txt
-rw-r--r-- 1 root root 0 Jun 29 17:07 /tmp/testdir/7.txt
-rw-r--r-- 1 root root 0 Jun 29 17:07 /tmp/testdir/8.txt
-rw-r--r-- 1 root root 0 Jun 29 17:07 /tmp/testdir/9.txt
-rw-r--r-- 1 root root 0 Jun 29 17:07 /tmp/testdir/10.txt
[root@localhost testdir]# find /tmp/testdir/ -type f -exec rm -rf {} \; #删除掉查找到的文件
[root@localhost testdir]# ls
[root@localhost testdir]#
也可以对删除的文件进行提示
[root@localhost testdir]# find /tmp/testdir/ -type f -ok rm -rf {} \;
< rm ... /tmp/testdir/1.txt > ? y
< rm ... /tmp/testdir/2.txt > ? y
< rm ... /tmp/testdir/3.txt > ? y
< rm ... /tmp/testdir/4.txt > ? ^C
[root@localhost testdir]# mkdir /root/test
[root@localhost testdir]# pwd
/tmp/testdir
[root@localhost testdir]# touch {1..10}.txt
[root@localhost testdir]# find /tmp/testdir/ -name "*.txt" -exec cp -r {} /root/test \; #查找到后进行复制
[root@localhost testdir]# ls /root/test/
10.txt 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt 9.txt
[root@localhost testdir]# find /tmp/testdir/ -name "*.txt" -exec mv {} /root/test \; #查找到后进行移动
[root@localhost testdir]# find /etc/ -name passwd -exec grep "root" {} \; #使用grep筛选找打的文件
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost testdir]# find /tmp/testdir/ -name "*.txt" -mtime +5 -exec rm -rf {} \;
[root@localhost testdir]# find /etc/sysconfig/network-scripts/ -name ifcfg* -mtime +5 -exec cp {} /tmp/testdir/ \;
#在目录中查找更改时间在5日以前的文件并删除它们