一、find 常用命令
1、 列出目录中最大的20个文件
bash
ls -lSh /data/log/ | head -20
2、查找目录下最大的5个文件:
bash
find /etc -type f -printf "%s\t%p\n" | sort -n | tail -5 | xargs ls -Slh
3、查询大于200M的文件
bash
find / -type f -size +200M | xargs ls -Slh
4、查询100M和200M之间的文件
matlab
find / -type f -size +100M -size +200M | xargs ls -Slh
5、查询root目录下最大的5个文件
bash
find /root -type f -exec ls -s {} + | sort -n | tail -n 5 | xargs ls -Slh
6、删除超200M,超过10天无人访问的文件
bash
find /minioData/disk_zip/ -atime +10 -size +200M | xargs rm -rf
7、统计目录中修改时间在10天内,文件大小大200M 的文件总和
bash
find /minioData/ -mtime -10 -size +200M -type f | xargs du -sh -c
二、xargs 命令
1、要将当前目录下所有 .txt 文件删除
bash
ls *.txt | xargs rm
2、要在当前目录下的所有 .txt 文件中搜索 "hello" 并显示匹配行的上下文,请使用以下命令:
bash
ls *.txt | xargs -I{} grep -C2 "hello" {}
此命令将把 ls 命令的输出作为 xargs 命令的输入,并将每个文件名替换为 {}。xargs 命令会将每个文件名作为参数传递给 grep 命令并执行它。
3、批量杀死进程
perl
ps -ef |grep "process_name" |grep -v grep |awk '{print $2}' |xargs kill -9
- process_name:表示进程名
- awk '{print $2}':表示获取第2列(PID列)
- xargs kill -9 :以PID作为输入,kill杀死进程
4、批量拷贝文件
bash
find ./ -type f -name "*" |xargs -I {} cp {} file/
find ./ -type f -name "*" |xargs -i cp {} ./
- find ./ -type f -name "*":查找当前路径下所有文件
- -I {}:指定标准输入为{}
- cp {} file/:将查到的文件拷贝到 file 下
5、批量打包目录
bash
当前路径下所有文件/目录打包成一个tar
ls ./ |xargs tar -cvf dir.tar
6、批量修改文件/目录名称
bash
ls |grep ".log" |xargs -i mv {} "{}.out"
- -i:指定标准输入为 {}
- mv {} "{}.out":{} 表示标准输入。将文件/目录名修改为 [原名].out
7、批量修改文件权限
arduino
find ./ -perm 644 | xargs chmod 700