find 查找命令
1 打印当前列表
[root@linux-3 ~]# find . -print
.
./install.log.bak
./.bash_logout
./.bash_history
./install.log.syslog.bak
./.tcshrc
./.rnd
2 查找/root下面以bak后缀,并打印出来
[root@linux-3 ~]# find /root/ -name '*.bak' -print
/root/install.log.bak
/root/install.log.syslog.bak
/root/install.log.bak.bak
/root/sendEmail-v1.56.tar.gz.bak.bak
/root/sendEmail-v1.56.tar.gz.bak
/root/install.log.syslog.bak.bak
3 查找/root下面以bak和txt后缀,并打印出来
[root@linux-3 ~]# find /root/ \( -name '*.bak' -o -name '*.txt' \) -print
/root/install.log.bak
/root/2.txt
/root/1.txt
/root/install.log.syslog.bak
/root/install.log.bak.bak
/root/sendEmail-v1.56.tar.gz.bak.bak
/root/3.txt
/root/4.txt
/root/sendEmail-v1.56.tar.gz.bak
/root/install.log.syslog.bak.bak
4 查找/root除了txt后缀,并打印出来
[root@linux-3 ~]# find /root ! -name '*.txt' -print
/root
/root/install.log.bak
/root/.bash_logout
/root/.bash_history
/root/install.log.syslog.bak
/root/.tcshrc
/root/.rnd
/root/.cshrc
/root/install.log.bak.bak
/root/.bashrc
5 查找/root下面所有的目录
[root@linux-3 ~]# find /root/ -type d -print
/root/
/root/test1
/root/test
6 查找/root下面普通文件
[root@linux-3 ~]# find /root/ -type f -print
/root/install.log.bak
/root/.bash_logout
/root/2.txt
/root/1.txt
/root/.bash_history
/root/install.log.syslog.bak
/root/.tcshrc
/root/.rnd
/root/.cshrc
/root/install.log.bak.bak
/root/.bashrc
/root/install.log
7 查找/root下面链接文件
[root@linux-3 ~]# find /root/ -type l -print
/root/test-test
8 查找/root最近两天被访问的文件
[root@linux-3 ~]# find /root/ -atime -2 -print
/root/
/root/test-test
/root/2.txt
/root/1.txt
/root/.bash_history
/root/test1
/root/.bashrc
/root/3.txt
/root/.bash_profile
/root/4.txt
9 查找/root最近两天被修改的文件
[root@linux-3 ~]# find /root/ -mtime -2 -print
/root/
/root/test-test
/root/2.txt
/root/1.txt
/root/.bash_history
/root/test1
/root/3.txt
/root/4.txt
/root/test
10 查找/root最后两天改变的时间的文件
[root@linux-3 ~]# find /root/ -ctime +2 -print
/root/install.log.bak
/root/.bash_logout
/root/install.log.syslog.bak
/root/.tcshrc
/root/.rnd
/root/.cshrc
/root/install.log.bak.bak
/root/.bashrc
/root/install.log
11 查找/root下权限为777的文件
[root@linux-3 ~]# find /root/ -perm 777 -print
/root/test-test
/root/2.txt
/root/1.txt
12 查找/root下用户是test的文件
[root@linux-3 ~]# chown test:test test.sh
[root@linux-3 ~]# ll|grep test.sh
-rw-r--r-- 1 test test 218 12-23 03:38 test.sh
[root@linux-3 ~]# find /root/ -user test -print
/root/test.sh
13 查找/root文件名为2.txt并删除其文件
[root@linux-3 ~]# find /root/ -name '2.txt' #已查找到
/root/2.txt
[root@linux-3 ~]# find /root/ -name '2.txt' -delete位 #删除
[root@linux-3 ~]# find /root/ -name '2.txt' #再次查找已没有
[root@linux-3 ~]#
14 查找/root下一天前的以bak后缀的文件,并复制到/root/find-test文件夹
[root@linux-3 ~]# find /root/ -mtime +2 -name '*.bak' #查找是否有bak后缀的文件
/root/install.log.bak
/root/install.log.syslog.bak
/root/install.log.bak.bak
/root/sendEmail-v1.56.tar.gz.bak.bak
/root/sendEmail-v1.56.tar.gz.bak
/root/install.log.syslog.bak.bak
[root@linux-3 ~]# find /root/ -mtime +2 -name '*.bak' -exec cp {} /root/find-test/ \; #查找复制
[root@linux-3 ~]# cd find-test/ #进文件夹查看
[root@linux-3 find-test]# ls
install.log.bak install.log.syslog.bak sendEmail-v1.56.tar.gz.bak
install.log.bak.bak install.log.syslog.bak.bak sendEmail-v1.56.tar.gz.bak.bak
#此命令可以用来做备份非常有用,只要更换命令就很强大
15 多匹配查找/root下面以txt后缀的文件
[root@linux-3 ~]# find /root/ -name '[a-z].txt' -print
/root/b.txt
/root/a.txt
[root@linux-3 ~]# find /root/ -name '[a-z][0-9].txt' -print
/root/b2.txt
/root/a1.txt
16 查找/root下大于3K的文件夹
[root@linux-3 ~]# find /root/ -size +3k -print
/root/
/root/test
17 查找/root下面但排除/root/test文件夹里面并以txt后缀的文件
[root@linux-3 ~]# find /root/ -path '/root/test/' -prune -o -name '*.txt' -print
/root/ABCD.txt
/root/b.txt
/root/2.txt
/root/b2.txt
/root/a.txt
/root/test/1.txt
/root/abc.txt
/root/a1.txt
18 查找/root下面但排除多个文件夹里面并以txxt后缀的文件
[root@linux-3 ~]# find /root/ \( -path '/root/test' -o -path '/root/test1/' \) -prune -o -name '*.txt' -print
/root/ABCD.txt
/root/b.txt
/root/2.txt
/root/test1/9.txt
/root/b2.txt
/root/a.txt
/root/abc.txt
/root/a1.txt
19 查找/root下面普通文件并排序
[root@linux-3 ~]# find /root/ -type f|sort
/root/2.txt
/root/a1.txt
/root/ABCD.txt
/root/abc.txt
/root/a.txt
/root/b2.txt
/root/b.txt
/root/test1/9.txt
/root/test/1.txt
20 查看硬件设备
[root@linux-3 ~]# find /dev/cdrom -print
/dev/cdrom
21 以上只是find基础,要想find发挥的更好,需要xargs的配合使用,请看shell编程学习之xargs
本文出自 “游造技术博客” 博客,转载请与作者联系!