什么是find?
假如现在有一个1.txt的文件,要找出来,根本找不到。find是找东西用的,不能找东西里面的内容,只能按照各类方式去查找。
find (固定的查找)/tmp/(在哪里查找) -name(按什么样的条件) "1.txt" (找谁呢1.txt)
例如:
touch {1..3}.txt
touch file{1..2}
找出tmp下以1.txt结尾的文件
找出tmp下以.txt结尾的文件
find /tmp ! -name "*.txt" 在tmp下找不是以.txt结尾的东西
-i 忽略大小写
例如
touch FILE1 大写的FILE1
find /tmp/ -iname “file1”
例如
find /tmp -size +1M (+就是大于 如果不加+号,就是正常好好的 - 小于)
find /etc -size +5M 查找在/etc/大于5M的文件
find /etc -size 5M 查找正好是5M的文件
find /etc -size -5M 查找小于5M的文件
空文件 find /tmp -size 0
按照修改时间查找
find /etc -mtime +5 五天前
写一个脚本查找最后创建时间是5天前,后缀是*.log的文件并删除。
find / *.log -mtime +5 -exec rm -rf {} \;
-type 按文件类型 f普通文件 d目录
例如
find /tmp -type f 找出在tmp下所有文件
find /tmp -type d 找出在tmp下所有目录(包括隐藏目录)
find /tmp -type f | wc -l 统计tmp下一共有多少个文件
find /tmp/ -name "*.txt" | wc -l 统计tmp下以.txt结尾的文件
【注意】东西找什么都可以,目录文件都能找出来,如果只要文件必须要用-type把类型规定死。
find . -perm 644 查找当前目录下,权限为644 (.叫做当前目录)
find /tmp/ -name "1.txt" -o -name "2.txt" 在tmp下找出以1.txt结尾或者是以2.txt结尾的东西
find /tmp/ -name "1.txt" -o -size +1M 在tmp下找出以1.txt结尾或者大于1M的东西
find /tmp/ -name "1.txt" -o -perm 644 在tmp下找出以1.txt结尾或者权限是644的东西
find /tmp/ -name “1.txt” -a -type f 在tmp下找名字是1.txt并且它是一个文件
find /tmp -name "*.txt" -a -type d 在tmp下找出名字是以.txt结尾的,并且它是一个目录
例如
在tmp下建一个大小位3M的10.txt文件
dd if=/dev/zero of=/tmp/10.txt bs=1M count=3
在/tmp下,找出大于2M并且小于5M的东西并且是文件
find /tmp/ -size +2M -a -size -5M -a type f -a可以无限往后加
touch {1..20}.txt
find /tmp -name "*.txt" -exec rm -rf {} \; 把20个txt都删了 不要在根下找,找出来删了系统就没了
-exec是固定的叫参数传递,这么查找不一定能找出多少个东西,找出的东西都执行它后面的动作
rm -rf是动作 {}是固定的,后面加路径 \;是固定的,行尾符,结束的意思。
请删除本机没有用的日志,日志路径是/var/log/。这个时候要考虑它的后缀名是什么。
日志就是.log结尾的 删除本机所有的镜像文件.iso 删除本机所有的word文档 .doc
例如
找出在/tmp下以.txt结尾的并且是文件,把它强制拷贝到/srv,并显示过程
中间加v显示过程 -rf强制
find /tmp -name "*.txt" -a -type f -exec cp -rvf {} /srv \;
例如
找出/tmp下所有的目录然后删除
find /tmp -type d -exec rm -rf {} \;
在/tmp下找出大于100k的,并且小于200k的文件,然后移动到/srv下
find /tmp -size +100k -a -size -200k -type -f -exec mv {} /srv \;
将/srv 3.txt 移动到/下
find /srv -name "3.txt" -exec mv -vf {} / \;
【注意】在执行后面的动作时,先把它找出来,再做后面的动作。不然容易出错。