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 + 24 到 24 之间; 0 表示 0 *24 + 24 到 0 之间; -1 表示 0*24 +24 内,甚至为未来时间… 可以用数学公式来体现: +n -- n天以前的文件 ((n+1)*24h, -∞) n -- 前n天的文件 (0, n*24h) -n -- 天以内的文件 [n*24h,(n+1)*24h]
图例