本节所讲内容:
• 文件查找find
find搜索文件系统、实时搜索
find [目录] [条件] [动作]
[目录]
不输入代表当前目录
例:
find
find /boot
[条件]
用户和组:-user -group
例:查找home目录下所有的属于指定的文件
[root@xuegod61 ~]# find /home/ -user swk
类型:-type ( f 文件 , d 目录 , l 连接 , p 管道 ,c 字符文件 ,b 块文件 ,s socket文件 )
[root@xuegod61 ~]# find /home/ -type f
[root@xuegod61 ~]# find /home/ -type d
文件名:-name
[root@xuegod61 ~]# useradd user1
[root@xuegod61 ~]# useradd vipuser2
[root@xuegod61 ~]# touch /home/user1/aaauserccc
[root@xuegod61 ~]# find /home/ -name *user*
/home/user1
/home/user1/aaauserccc
/home/vipuser2
大小:-size +NM 大于N兆 -NM 小于N兆
例:找到boot目录下大于4M文件
[root@xuegod61 ~]# find /boot/ -size +4M
时间: -mtime -atime -ctime
任务:百度一下如何针对分钟进行查找
扩展:Linux系统中ctime , atime ,mtime 有什么区别
[root@xuegod61 ~]# touch a.txt
[root@xuegod61 ~]# stat a.txt
File: ‘a.txt’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd00h/64768d Inode: 36433014 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2016-02-20 07:55:13.285056713 -0500
Modify: 2016-02-20 07:55:13.285056713 -0500
Change: 2016-02-20 07:55:13.285056713 -0500
ctime:“改变时间(change time)”
mtime :“修改时间(modification time)”
atime :“访问时间(access time)”
例:
改变和修改之间的区别在于是改文件的属性还是更改它的内容。
chmod a-w myfile,那么这是一个改变;改变的ctime
echo aaa > bajie 那么这是一个修改。mtime :“修改时间
atime,改变是文件的索引节点发生了改变;mtime 修改是文本本身的内容发生了变化。
总结:当文件的属性发生修改时,ctime
当文件内容发生修改时,mtime,ctime
当文件被访问时,atime
[root@xuegod61 ~]# touch a.txt
[root@xuegod61 ~]# chmod +x a.txt #ctime发生改变
[root@xuegod61 ~]# echo aaa > a.txt #mtime,ctime发生改变
[root@xuegod61 ~]# cat a.txt #atime发生改变
ls(1) 命令可用来列出文件的 atime、ctime 和 mtime。
ls -lc filename 列出文件的 ctime ll -c
ls -lu filename 列出文件的 atime ll -u
ls -l filename 列出文件的 mtime ll
[root@xuegod61 ~]# date -s 2016-2-23
Tue Feb 23 00:00:00 EST 2016
[root@xuegod61 ~]# find /root/ -mtime +1 | grep a.txt
注:查找出root目录48小时之前创建的文件
[root@xuegod61 ~]# find /root/ -mtime 2 | grep a.txt
注:查找出root目录48小时之前创建的文件
[root@xuegod61 ~]# find /root/ -mtime -3 | grep a.txt
注:查找root目录下72小时之内创建的文件
权限:-perm
[root@xuegod61 ~]# find /boot/ -perm 755 #等于0775权限的文件或目录
SUID 4,SGID 2 ,sticky 1
[root@xuegod61 ~]# find /tmp/ -perm -777 #至少有777权限的文件或目录
例:
[root@xuegod61 ~]# mkdir ccc
[root@xuegod61 ~]# chmod 777 ccc
[root@xuegod61 ~]# mkdir test
[root@xuegod61 ~]# chmod 1777 test/
[root@xuegod61 ~]# touch b.sh
[root@xuegod61 ~]# chmod 4777 b.sh
[root@xuegod61 ~]# find /root/ -perm 777
/root/ccc
[root@xuegod61 ~]# find /root/ -perm 1777
/root/test
[root@xuegod61 ~]# find /root/ -perm 4777
/root/b.sh
[root@xuegod61 ~]# find /root/ -perm -777
/root/ccc
/root/test
/root/b.sh
查找的目录深度:
[root@xuegod61 ~]# find /boot/ -maxdepth 2
#只查找目录第二层的文件和目录
多条件:
-a -o ! 或 -and -or -not
[root@xuegod61 ~]# find /boot/ -size +4M -a -size -8M
注:找出来boot目录下文件大小在4~8M之间的文件或目录
[root@xuegod61 ~]# find -type f -a -perm /o+w
./b.sh
[root@xuegod61 ~]# find ! -type f -a -perm -001
[动作]
-ls
-ok
-exec
xargs
-printf
[root@xuegod61 ~]# touch test
[root@xuegod61 ~]# cp /etc/passwd test/
[root@xuegod61 ~]# cp -r /boot/ test/
[root@xuegod61 ~]# find /root/test/ -type f -exec rm {} \;
或者:
[root@xuegod61 ~]# find /root/test/ -type f | xargs rm -rf
参数解释:
-exec 执行命令
rm 要执行的命令
{} 表示find -type f 查找出来了文件内容
\; {} 和 \;之间要有空格。 固定语法,就是以这个结尾