shell脚本find详解

编程

作用:

  Linux下find命令在目录结构中搜索文件,并执行指定的操作。Linux下find命令提供了相当多的查找条件,功能很强大

find常见命令参数:

<span>命令选项:</span>

-name 按照文件名查找文件。

-perm 按照文件权限来查找文件。

-user 按照文件属主来查找文件。

-group 按照文件所属的组来查找文件。

-mtime -n +n 按照文件的更改时间来查找文件 【-7 7天之内 +7 7天前】

-nogroup 查找无效属组的文件,即该文件所属的组在/etc/groups中不存在。

-nouser 查找无效属主的文件,即该文件的属主在/etc/passwd中不存在。

-newer file1 ! file2 查找更改时间比文件file1新但比文件file2旧的文件。

-type 查找某一类型的文件,诸如:

b - 块设备文件。

d - 目录。

c - 字符设备文件。

p - 管道文件。

l - 符号链接文件。

f - 普通文件。

-size n:[c] 查找文件长度为n块的文件,带有c表示文件长度以字节计。

-depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。

-follow:如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。

另外,下面三个的区别:

-amin n 查找系统中最后N分钟访问的文件

-atime n 查找系统中最后n*24小时访问的文件

-cmin n 查找系统中最后N分钟被改变文件状态的文件

-ctime n 查找系统中最后n*24小时被改变文件状态的文件

-mmin n 查找系统中最后N分钟被改变文件数据的文件

-mtime n 查找系统中最后n*24小时被改变文件数据的文件

常用命令展示:

查找普通文件目录:

find /home/omd -type f  (普通文件)

find /home/omd -type d (查询目录)

只显示1级目录文件且过滤自身:

find ./ -maxdepth 1  -type d  ! -name "hhh"

查找一天内被访问过(access)的文件:

find /home/omd/ -atime -1 -type f

查询inode相同的文件:

find / -inum inode数字

除了某个文件以为,其余的均删除:

find /home/omd/ -type f ! -name h.txt  | xargs  rm –f  

ls | grep -v "h.txt" |xargs rm -rf (与上面类似,删除除了某个文件外的所有文件)

删除目录下所有文件:

find /tmp/ -type f -exec rm -rf {} ;

find /tmp/ -type f | xargs rm -rf

查看当前路径下所有文件的信息:

find /tmp/ -type f ! -name a |xargs rm –rf

find ./ -type f -exec file {} ;

查找指定时间内修改过的文件:

# 当前路径下访问文件超过2分钟文件

find ./ -amin +2

# 当前路径下访问文件刚好2分钟的文件

find ./ -amin 2

find ./ -cmin +2

find ./ -mmin +2

find ./ -mtime +2

find ./ -ctime +2

find ./ -mtime +2

find ./ -ctime +2

find / -ctime +20 最近修改文件时间20分钟以前

find / -mtime +7 修改文件为7天之前的(最重要)

find / -mtime 7 修改文件为第7天,就是往前推7天

find / -mtime -7 修改文件为7天之内的

按照目录或文件的权限来查找文件:

find /opt -perm 777

按大小查找文件:

find / -size +10M  |sort 【查找大于10M的文件】

find / -size -10M |sort 【查找小于10M的文件】

find / -size 10M |sort 【查找10M的文件】

在test 目录下查找不在test4子目录之内的所有文件:

find ./test -path "test/test4" -prune -o -print

【可以使用-prune选项来指出需要忽略的目录。在使用-prune选项时要当心,因为如果你同时使用了-depth选项,那么-prune选项就会被find命令忽略】

查找比yum.log 但不比hhh.txt新的文件:

find / newer /var/log/yum.log ! -newer ./hhh.txt

查找更改时间在比log2012.log文件新的文件:

find ./ -newer log2012.log

在当前目录下查找文件长度大于1 M字节的文件:

find ./ -size +1000000c –print

find ./ –size +1M -print

在/home/apache目录下查找文件长度恰好为100字节的文件:

find /home/apache -size 100c -print

在当前目录下查找长度超过10块的文件

find . -size 10 –print

其他命令:

find /home/omd/ -name *.txt | while read line; do cp $line /home/omd/h;done

for name in `chkconfig | grep 3:on |awk "{print $1}"` ; do echo $name >> h.txt; done;

find /home/omd/ -name *.txt | xargs -i cp {} /home/omd/h

cat /home/omd/h/he.txt | while read line; do echo $line >> /home/omd/h.txt ; done;

cat /home/omd/h.txt | awk "BEGIN{print "Name "} {print $1}"

cat /home/omd/h.txt | xargs -I {} cat {}

find . -name "*.txt" |xargs sed -i "s/hhhh/hHHh/g"

以上内容希望帮助到大家,很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货需要的可以免费分享给大家,需要请戳这里

 

以上是 shell脚本find详解 的全部内容, 来源链接: utcz.com/z/514453.html

回到顶部