find用法 以及和exec xargs 的组合使用

1、查找当前目录下所有的txt的文件

[root@master1 ~]# find . -name "*.txt" -type f
./a.txt
./b.txt

2、exec 结合  :查找当前目录下所有的txt的文件并读取文件内容

[root@master1 ~]# find . -name "*.txt" -type f -exec cat {} \;
1111a
2222a
33333b
44444b
[root@master1 ~]#

3、与xargs结合  :查找当前目录下所有的txt的文件并读取文件内容

[root@master1 ~]# find . -name "*.txt" -type f |xargs cat
1111a
2222a
33333b
44444b
[root@master1 ~]#

ps:exec参数是一个一个传递的,传递一个参数执行一次命令;xargs一次将参数传给命令,可以使用-n控制参数个数

     如果文件数量太多 建议不要使用xargs  linux有参数上限限制的

 

4、find 有时候删除大量文件的时候很有用  可以用上面的命令结合来删  只要吧cat  换成 rm -f  就行了  但我这里提供一个新思路  用find 自带的delete 更快一点 也更灵活简单

find . -name "*.txt" -type f -delete

5、find检索可以做到与或的检索

    比如检索 a开头的文件 或者b开头的文件   -o  参数 代表 or

[root@master1 ~]# find . -name "a.*" -o -name "b.*" -type f
./a.txt
./b.txt

    比如查找a开头的文件且 是txt文件类型的  -a 参数表示 and

[root@master1 ~]# find . -name "a.*" -a -name "*.txt" -type f
./a.txt
[root@master1 ~]#

6、其他常用参数列一下

-size +100M   文件大于100M的
-atime +1       文件访问时间大于1天的
-amin  +30      文件访问时间大于30分钟的
-mtime +1      文件修改时间一天以上的
-mmin +30     文件修改时间30分钟以上的
-perm 644      文件权限是644的 即 rw-r--r--
-user xxx        可以指定文件用户
-group   xxx    可以指定文件属组

 7、时间相关的参数

find -mtime +N/-N/N 的时间算法:
以当前时间点开始算起,
+表示往左,从该时间点开始再继续往更早推,可以称作xx以外;
-表示往右,从该时间点算起往后的时间推,可以称作xx以内;
没有加减号表示据此此前第N天。
一天是指当前系统时间算起的,向前减24小时。
对于 find . -mtime N 实际上你应该这样理解:N * 24
+1 表示 1 * 24 +24小时以外;
+0 表示 0 * 24 +24小时以外;
1 表示 1 * 24 + 2424 之间;
0 表示 0 *24 + 240 之间;
-1 表示 0*24 +24 内,甚至为未来时间…
可以用数学公式来体现:
+n -- n天以前的文件
((n+1)*24h, -∞)
n -- 前n天的文件
(0, n*24h)
-n -- 天以内的文件
[n*24h,(n+1)*24h]

图例

 

posted @ 2021-03-12 16:10  s。  阅读(124)  评论(0编辑  收藏  举报