Please enable JavaScript.
Coggle requires JavaScript to display documents.
18.查找文件 (find: search for files in a directory hierarchy (搜索一个或多个目录 (文件类型,…
18.查找文件
find: search for files in a directory hierarchy
搜索一个或多个目录
find ~
文件大小/文件名
find ~ -type f -name "*.JPEG" -size +1M | wc - l
双引号引起来name模式 以防shell路径名展开
-size +1M 要求文件大小大于1M
减号意味着<
不带符号意味着精确匹配该大小
所有需要数值参数的测试条件都可以应用这种+/-表示法
文件大小的单位:
b 512个字节块 默认值
c 字节
w 两个字节的字
k 千字节
M 兆字节
G 千兆字节
文件类型
find ~ -type d | wc -l d限制为目录 f限制为普通文件
b 块设备文件
c 字符设备文件
d 目录
f 普通文件
l 符号链接
其他测试条件
-cmin n 最后修改时间(内容或属性)在n分钟 more than n :+n less than n: -n
cnewer file 最后修改时间(内容或属性)比file更近的
ctime n 最后修改时间在n*24小时
-empty 空文件或者目录
-group name 属于用户组name的文件或目录 name可以是group name或者GID
-iname pattern 类似于-name但是忽略大小写
-inum n 匹配inode号为n的文件
-mmin n 最后修改时间(内容)在n分钟
-mtime n 最后修改时间(内容)在n*24小时
-name pattern 匹配文件名符合通配符模式pattern的文件或目录
-newer file 内容修改新于file
-nouser 匹配不属于任何一个valid user的文件/目录
-nogroup 不属于任何一个valid group
-perm mode 匹配权限符合mode的文件或目录 mode可以用八进制或者符号表示法
-samefile name 匹配和文件name享有相同inode号的文件
-size n 匹配的文件大小为n
-type c 文件类型为c
-user name 属于用户name的文件或目录, name可以用用户名或者UID来表示
逻辑操作符
find ~ ( -type f -not -perm 0600 ) -or ( -type d -not -perm 0700 )
查找权限不是0600的文件或者不是0700的目录
-and 是隐含的 -a
-or -o
-not !
() Groups 控制优先级 注意需要转义
注意短路现象
options
tests
actions
预定义的操作
-delete 删除查找结果的文件和目录
-ls 类似于 ls 搜索结果
-print 打印出full pathname 默认操作 (and -print 恒真)
-quit 一旦找到一个匹配 退出
用户定义的行为
-exec command {} ;
{} 代表了当前的pathname
分号是要求的界定符表明命令结束
等价于 -delete
-exec rm '{}' ';'
交互式地执行命令 使用-ok 会提示用户确定
提高效率
把分号改为加号
使用xargs
从标准输入接受输入, 把输入转换为一个特定命令的参数列表
find ~ -type f -print | xargs ls -l
xargs --show-limits
处理文件名中的空格
find ~ -iname ‘*.jpg’ -print0 xargs --null ls -l
选项
-depth 先处理目录中的文件,再处理目录自身 对于-delete行为是自动的
-maxdepth levels
-mindepth levels
指定find陷入目录中的深度
-mount 指导find不要搜索挂载在其他文件系统上的目录
-noleaf 不要基于搜索类Unix文件系统的假设来优化搜索
当搜索DOS/windows的文件系统和CD-ROMs需要指定
locate: find files by name
快速搜索路径名数据库
locate数据库被程序updatedb管理(作为一个cron工作例程)
手动更新数据库 sudo updatedb
xargs: build and execute command lines from standard input
stat: 加大马力的ls ,会显示系统对某个文件及其属性所知道的所有信息