linux find a参数,Linux常用命令 | find

1460000038899376

作者简介李先生(Lemon),高级运维工程师(自称),SRE专家(目标),梦想在35岁买一辆保时捷。喜欢钻研底层技术,认为底层基础才是王道。一切新技术都离不开操作系统(CPU、内存、磁盘)、网络等。坚持输入输出,记录自己学习的点滴,在平凡中坚持前行,总有一天会遇见不一样的自己。公众号:运维汪(ID:Leeeee_Li)。

一、前言

自己平时比较喜欢记笔记,工作四五年,笔记上千篇。最近离职了,加上职场瓶颈,准备好好复盘和整理一下相关的笔记、梳理一下知识点,可能后面有一系列的博文输出,从基础到进阶。

1460000038899372

二、find命令

find命令是Linux系统管理员工具库中最强大的工具之一,可以使用find命令根据权限、类型、日期、所有权、大小等搜索文件和目录,它还可以与grep或sed等其他工具结合使用。

语法:find [options] [path...] [expression]

三、实践

1、按文件名查找find / -name access.log

2、通过扩展名查找文件find . -name “*.txt” #在当前目录下查找所有txt后缀文件

3、按权限查找文件find . -perm 755 -print #查找当前目录下755权限的文件

find . -perm -007 -print #查找所有用户都可以读、写、执行的文件

4、按所有者查找文件find ~ -group lile -print #查找~目录下所属者为lile的文件

find /home -group -print #查找属主账户已经被删除的文件,查找在/etc/passwd里已经没有了的账户

find ~ -user lile -print #查找~目录下所属者为lile的文件

find /home -nouser -print #查找属主账户已经被删除的文件,查找在/etc/passwd里已经没有了的账户

5、按修改日期查找文件find . -mtime -3 -print #查找更改时间在3天之内的文件

find . -mtime -2 -print #查找更改时间在2天之前的文件

6、按类型查找文件find . -type d -print #查找当前目录下的所有目录

find . ! -type d -print #查找当前目录下除了目录的其他所有类型文件

7、按大小查找文件find . -size 100c -print 查找当前目录下文件长度为100字节的文件

find . -size +1000000c -print 查找当前目录下文件大于1M字节的文件

find . -size +10 -print 查找当前目录下超过10块的文件(1块=512字节)

8、排除某个目录find /shell -path "/shell/tt" -prune -o -print #查找在/shell目录下除了tt目录的其他

find /shell -path "/shell/tt" -prune -o -name "*.txt" -print #查找在/shell目录下除了tt目录的txt文件

9、目录与文件查找顺序find /shell -depth -print

#有dept:先处理目录下的子内容,再处理目录本身

#无dept:先处理目录本身,然后处理目录下的子内容

10、正则查找find . -name "[A-Z]*" -print #查找当前目录及子目录中查找文件名以大写字母开头的文件

find . |xargs grep "YZS" #查找某个文件夹下面的哪些具体文件包含某一个字段

find . -regextype "posix-egrep" -regex ".*\.(cc|h)" |xargs cat |grep -v ^$ |wc -l

11、查找并对结果做相关操作find . -type l -exec ls -l {} \; #找到为文件类型为软连接的文件

find . -type f -print | xargs file #文件分类

find / -name "core*" -print | xargs echo "">/tmp/core.log #找到内存信息转储文件coredump,然后保存到/tmp/core.log下

find . -name "*.txt" -print0 | xargs -0 rm -rf #找到后删除,慎用

find / -path '/etc/ssl/certs' -prune -o -name *.pem | xargs -i cp {} ./pem #找到后并拷贝

cat file.txt | xargs #将多行转换成单行

cat file.txt | xargs -n 3 #指定每行的参数数量 每次执行需要x个参数

echo "splitXsplitXsplitXsplit" |xargs -d X #用自己指定的分隔符进行分割

echo "splitXsplitXsplitXsplit" |xargs -d X -n 2 #用自己指定的分隔符进行分割,并且指定每行输出的数量

cat args |xargs -I {} bash cecho.sh p {} 1 #从cat里读取数据,每读到一个就替换一次

12、匹配多个文件find . \( -name "*.txt" -o -name "*.pdf" \)

13、find排除某个目录find / -path '/etc/ssl/certs' -prune -o -name *.pem #find 查找路径 -path '排除目录路径' -prune -o ....

四、find时间点问题

find与时间有关的选项有-atime(访问时间)、-ctime(创建时间)、-mtime(属性修改时间),参数为后面跟的时间n;find . -atime n     这里的n表示n天之前的“一天之内”被访问过的文件

find . -atime +n   列出在n天之前(不包含n天本身)被访问过的文件

find . -atime -n    列出在n天之内(包含n天本身)被访问过的文件

实例:

假如现在的时间点为20171209的15:00整,那么下面几个查询表示的具体时间范围

1:创建文件touch -a -d "2021-01-01 15:00" a.txt

touch -a -d "2021-01-02 15:00" b.txt

touch -a -d "2021-01-03 15:00" c.txt

touch -a -d "2021-01-04 15:00" d.txt

touch -a -d "2021-01-05 15:00" e.txt

touch -a -d "2021-01-06 15:00" f.txt

touch -a -d "2021-01-07 15:00" g.txt

touch -a -d "2021-01-08 15:00" h.txt

2:以下三条命令得到的结果分别为:

find . -atime 2**找出两天之前的一天内被访问文件(距离现在的-72小时 ~~ -48小时之间)

1460000038899375

find . -atime -2  找出距离此时两天之内的被访问的文件(距离现在的前48小时之内)

1460000038899373

find . -atime +2    找出两天之前,不包括两天之前的一天(也就是不包括-2和2的)之前的被访问的文件(离此时72小时之前)

1460000038899374

3、图形分析

1460000038899377

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值