35 | find方式的使用

1 按名称查找文件

1.1 在单目录中查找

[root@centos7 ~]# find . -name test.txt
[root@centos7 ~]# find / -name test.txt
/opt/test.txt
[root@centos7 ~]# 

1.2 在几个不同的目录

[root@centos7 ~]# find . -name test.txt
[root@centos7 ~]# find  /data/  /home/  /usr/local/   -name test.txt
/opt/test.txt
[root@centos7 ~]# 

2 正则表达式查找文件

2.1 单个字符

[root@centos7 ~]# find /opt -type f   -name "test?"
[root@centos7 ~]# find /opt -name "*.pdf"

2.2 多个字符

[root@centos7 ~]# find /opt -type f   -name "*.pdf"
[root@centos7 ~]# find /opt -type f   -name "test*"

2.3 附加条件参数”-a “,“ -o ” ,“ –not”的使用

使用 -a这个参数可以链接2个不同的条件且这2个条件必须要满足

[root@centos7 ~]# find /opt -type f   -name "test*"  -a   -test1  test2

用-o这个参数链接2个不同的条件仅满足其中一个条件即可!

[root@centos7 ~]# find /opt -type f   -name "test*"   -o   -test1  test2

用-not表示对这2个条件取反

[root@centos7 ~]# find /opt -type f   -name "test*"  -not   -test1  test2

3 查找不同类型的文件

通过指定 -type 选项来搜索其他类型的文件。

[root@centos7 ~]# find . -type d -name "test*"
[root@centos7 ~]# 
[root@centos7 ~]# find . -type | -name "test*"
[root@centos7 ~]# 

4 按指定的时间戳查找文件

Linux 系统中的 3 个不同的时间戳:

 - 访问时间(-atime/天,-amin/分钟):最后一次读取文件的时间。
 - 修改时间(-mtime/天,-mmin/分钟):文件内容最后一次被修改的时间。
 - 变化时间(-ctime/天,-cmin/分钟):上次更改文件元数据的时间(如,所有权、位置、文件类型和权限设置)

注意:

-atime n  查找系统中最后n*24小时访问的文件
-ctime n  查找系统中最后n*24小时被改变文件状态的文件
-mtime n  查找系统中最后n*24小时被改变文件数据的文件

-amin n   查找系统中最后N分钟访问的文件
-cmin n   查找系统中最后N分钟被改变文件状态的文件
-mmin n   查找系统中最后N分钟被改变文件数据的文件

在这里插入图片描述
在这里插入图片描述

4.1 搜索 atime 超过一年的文件

[root@centos7 ~]# find . -type f -atime +365
./.bash_logout
./.cshrc
./.tcshrc
[root@centos7 ~]# 

4.2 查找 mtime 正好是 5 天前的文件

请不要包含 +,因为它的意思是“大于”

[root@centos7 ~]# find . -type f -mtime 5
[root@centos7 ~]# 

4.3 搜索 ctime 在 5~10 天前的文件

find . -type f -ctime +5 -ctime -10

5 按大小查找文件

-size选项使我们能够按指定大小查找文件

b:512 字节块(默认)
c:字节
w:双字节字
k:KB
M:MB
G:GB

按时间戳查找文件,+ 表示“大于”,- 表示“小于”。例如,要查找大小为 10 MB ~ 1 GB 的文件:

find . -type f -size +10M -size -1G

6 按权限查找文件

find 命令的 -perm 选项可以帮助我们按指定权限查找文件:

[root@centos7 ~] find . -type f -perm 777

7 按所有权查找文件

使用 -user 选项指定用户名:

[root@centos7 ~] find -type f -user test

8 在找到文件后执行命令

[root@centos7 ~] find . -type f -atime +365 -exec rm -rf {} \;

上述命令在 -exec 选项后是 rm -rf,其用于删除文件。{} 是用于查找结果的占位符。
注意:占位符 {} 非常重要,尤其是在您想删除文件时。因为,如果您不使用它,该命令将对所有文件执行(而不是您刚刚通过 find 命令找到的文件)。

[root@centos7 ~] find  /etc/  /tmp  /root/  -name  "test"   -exec mv {}  {}.`date + %F` \;

9 find常用参数

-name   按照文件名查找文件。
-perm   按照文件权限来查找文件。
-prune  使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命令忽略。
-user   按照文件属主来查找文件。
-group  按照文件所属的组来查找文件。
-mtime -n +n  按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前。find命令还有-atime和-ctime 选项,但它们都和-m time选项。
-nogroup  查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在。
-nouser   查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在。
-newer file1 ! file2  查找更改时间比文件file1新但比文件file2旧的文件。
-type  查找某一类型的文件,诸如:
b - 块设备文件。
d - 目录。
c - 字符设备文件。
p - 管道文件。
l - 符号链接文件。
f - 普通文件。
-size n:[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计。-depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。
-fstype 查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/etc/fstab中找到,该配置文件中包含了本系统中有关文件系统的信息。
-mount 在查找文件时不跨越文件系统mount点。
-follow 如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。
-cpio 对匹配的文件使用cpio命令,将这些文件备份到磁带设备中。
-inum 按inode号查找文件(ls -i显示inode号)
-maxdepth 搜索深度,最大搜索到距当前目录的第几层
-mindepth 搜索深度,最小搜索到距当前目录的第几层
-links 按硬链接数查找
-uid 根据uid查找 (id命令用于查看uid=多少)
-empty 查找空文件(常用)
-print 打印到屏幕,默认动作
-delete 删除找到的文件

10 xargs的使用

10.1 常用参数

-a file 从文件中读入作为sdtin
-e flag ,注意有的时候可能会是-E,flag必须是一个以空格分隔的标志,当xargs分析到含有flag这个标志的时候就停止。
-n num 后面加次数,表示命令在执行的时候一次用的argument的个数,默认是用所有的。
-i 或者是-I,这得看linux支持了,将xargs的每项名称,一般是一行一行赋值给 {},可以用 {} 代替。
-r no-run-if-empty 当xargs的输入为空的时候则停止xargs,不用再去执行了。
-s num 命令行的最大字符数,指的是 xargs 后面那个命令的最大命令行字符数。
-L num 从标准输入一次读取 num 行送给 command 命令。
-d delim 分隔符,默认的xargs分隔符是回车,argument的分隔符是空格,这里修改的是xargs的分隔符。
-x exit的意思,主要是配合-s使用

10.2 使用举例

10.2.1 单行输入可控多行输出

[root@node1 soft]# echo {a..z} |xargs -n6
a b c d e f
g h i j k l
m n o p q r
s t u v w x
y z

10.2.2 多行输入单行输出

[root@node1 soft]# seq 20 |xargs -n3
1 2 3
4 5 6
7 8 9
10 11 12
13 14 15
16 17 18
19 20

10.2.3 -d 选项可以自定义一个定界符

[root@node1 soft]# echo "testMtestMtestMtest" | xargs -dM
test test test test

10.2.4 结合 -n 选项使用

[root@node1 soft]# echo "testMtestMtestMtest" | xargs -dM  -n3
test test test
test

10.2.5 复制所有文本文件到 /data/ 目录下

ls *.txt | xargs -n1 -I {} cp {} /data/

10.2.6 xargs -0 将 \0 作为定界符

find . -type f -name “*.log” -print0 | xargs -0 rm -f

10.2.7 统计一个源代码目录中所有 java文件的行数

find . -type f -name “*.java” -print0 | xargs -0 wc -l

10.2.8 查找所有的 jpeg 文件,并且压缩

find . -type f -name “*.jpeg” -print | xargs tar -czvf images.tar.gz

10.2.9 使用 xargs下载所有链接

cat test-list.txt | xargs wget -c
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值