4.4.1 linux文件管理 : 文件综合:查找find
作用:
找到符合规则的文件
对这些文件依次执行某种命令
例如:
批量重命名
批量删除
批量备份
格式:
find pathname -options [-print -exec -ok ...]
pathname 路径 . | /root
-print 把匹配到的文件输出到标准输出
-exec 对匹配的文件执行shell命令,格式为 ‘cmd’{} \; 注意{} \;之间的空格
-ok 和-exec类似,就是每一次命令之前都会需要确认
参数:
-name 按照name查询
-perm 按照权限
-user 按照文件属主
-group 按照文件属组
-mtime -n +n 按照文件的更改时间,-n 是更改时间距离现在n天内,+n距离n天以前
-type 按照类型 b d c p l f
-nogroup / -nouser 没有组合属于用户
-prune 不在当前目录寻找
-depth 先查当前目录再查子目录
-maxdepth n 指定便利深度
-size n [c] 查找文件长度为n块的文件,有c表示字节 [注意+n n -n]
举例
按照名字:
##find . -name "*.txt" -print //包含子文件夹
./dev.txt
./22.txt
./.cache/tracker/db-locale.txt
按照权限:
##find . -perm 777
./Desktop/Parallels Shared Folders
./Desktop/redis_start.sh
./.parallels/user-dirs.dirs
./.parallels/gtk-bookmarks
./test.sh
##find . -type l
./Desktop/Parallels Shared Folders
./.parallels/user-dirs.dirs
./.parallels/gtk-bookmarks
按照大小:
##find . -size -2M 小于2M的
##find . -size 2M 等于2M的
##find . -size +2M 大于2M的
按照用户:
##find . -user root
./Desktop/Parallels Shared Folders
指定便利深度:
##find . -maxdepth 1 -name "*.o"
./3.o
./1.o
./2.o
./6.o
./4.o
./5.o
执行命令 -exec:
##find . -maxdepth 1 -name "*.o.txt" -exec echo {} \;
./4.o.txt
./6.o.txt
./2.o.txt
./3.o.txt
./5.o.txt
./1.o.txt
执行命令 -exec [批量复制]:
##mkdir dir
##find . -maxdepth 1 -name "*.o.txt" -exec cp {} dir \;
##cd dir
##ls
1.o.txt 2.o.txt 3.o.txt 4.o.txt 5.o.txt 6.o.txt
执行命令 -exec [批量删除]:
##find . -maxdepth 1 -name "*.o.txt" -ok rm {} \;
< rm ... ./4.o.txt > ?
执行命令 -ok 需要确定:
##find . -maxdepth 1 -name "*.o.txt" -ok cp {} X \;
< cp ... ./4.o.txt > ? y
< cp ... ./6.o.txt > ? y
< cp ... ./2.o.txt > ?
时间:
按照时间,分为三类,访问文件时间,修改文件状态时间,修改文件内容时间
??-amin n 查找最后N分钟访问 access
-atime n 查找最后N天访问
??-cmin n 查找最后N分钟改变状态 change
-ctime n 查找最后N天改变状态
??-mmin n 查找最后N分钟改变数据 modify
-mtime n 查找最后N天改变数据
##find ~ -atime 1 -print
/home/sgx/.local/share/keyrings/login.keyring
/home/sgx/.local/share/keyrings/user.keystore