find命令和xargs命令

find 查找

实时查找文件,查找速度慢,精确

格式

find 路径 [选项]  文件  [参数]

选项

-name    按文件名查找
-perm    按文件权限查找
-prune   可以使find不在当前指定目录下查找
-user    按文件属主查找
-mtime   按文件时间查找
-type  /b/d/c/p/l/f  文件类型,块设备、目录、字符设备、管道、符号链接、普通文件
-size   文件大小,字节(+表示v大于,-表示小于,不带符号表示等于)

参数

-print   将查询结果输出到标准输出
-exec    将匹配的文件执行该参数所给的shell命令

示例

find  /docment  -name  *.txt        #根据文件名查询txt结尾的文件
find  /docment  -perm  755  -print  #根据文件权限查找文件
find  /usr  -mtime  4               #查找文件更新时间距现在4天以上5天以内的文件
find  /usr  -mtime  +4        #查找文件更新时间5天以上的文件
find  /usr  -mtime  -4        #查找文件更新时间据现在4天以内的文件
find  /document  -size  +100m       #查找文件大于100m的文件
vim $(find  /   -name  test.txt)    #查找文件后直接用vim打开

find  搜索路径  [选项]   搜索内容  -exec  命令2  {}  \;
#将find命令的结果由exec调用的命令2来处理,{}表示find执行的结果
#-ok选项和-exec选项类似,ok会进行询问再执行,exec直接执行

find  /  -user  wang  -exec cp -a {}  /document/file   \;   将所有属于wang用户的文件复制到指定路径

#在当前目录下(包含子目录),查找所有txt文件并找出含有字符串"bin"的行 
find ./ -name "*.txt" -exec grep "bin" {} \;

#在当前目录下(包含子目录),查找10天前的log文文件 
find ./ -name ".log" -mtime +10 -exec ls {} \;  ( {}和\;中间有空格,\和;中间没有空格,是连接的)

#在当前目录下(包含子目录),删除10天前的log文文
find ./ -name ".log" -mtime +10 -exec rm {} \;

#在当前目录下(包含子目录),删除所有txt文件
find ./ -name "*.txt" -exec rm {} \;

#查找指定文件的父目录
find /   -name 'myfile' -type f -exec dirname {} \;

逻辑关系

-a   与
-o   或
-not  非
find  -user test  -a -group  test     查找用户名为test和所属组为test的文件
find  -user test  -o  -user  ttt      查找用户名为test或ttt的文件
find  -not test                       查找用户名不是test的文件
find  .  -size +2k  -a -type f        当前目录下搜索大于2KB,且文件类型为普通文件

xargs 传参

将一个命令输出转成命令参数传递给后续命令

格式

some command | xargs [选项]  command
选项
	-a    从文件中读入作为输入
	-n    后面加次数,表示执行一次用几个参数,默认是所有
	-t    先打印,再执行
	-I    或者i看系统支持{ }替换字符,表示文件内容

示例

ls *.sh | xargs ls -al      #将ls输出的参数作为参数执行后续命令
ls *.sh | xargs -t ls -al   #在执行后续命令前先打印要运行的命令
ls *.sh | xargs -t -I '{}' mv {} {}.bak    #将所有的.sh结尾的文件,都加上.bak后缀。-I 指定'{}'表示将后面命令行的{}替换成前面解析出来的参数,默认指定{}
ls *sh | xargs -t -n2 ls -al      #将参数以2个为一组传递给后续命令
ls | grep –vm "test" | xargs rm –rf {}     #删除当前目录行除test文件的所有文件
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值