江苏建筑网站,网站维护的基本内容包括哪些,做网站1000以下哪家好,广告代码在线制作文章目录 find补充说明语法选项参数实例根据文件或者正则表达式进行匹配否定参数根据文件类型进行搜索基于目录深度搜索根据文件时间戳进行搜索根据文件大小进行匹配删除匹配文件根据文件权限/所有权进行匹配借助-exec选项与其他命令结合使用搜索但跳过指定的目录find其他技巧收… 文章目录 find补充说明语法选项参数实例根据文件或者正则表达式进行匹配否定参数根据文件类型进行搜索基于目录深度搜索根据文件时间戳进行搜索根据文件大小进行匹配删除匹配文件根据文件权限/所有权进行匹配借助-exec选项与其他命令结合使用搜索但跳过指定的目录find其他技巧收集其它实例 locate补充说明语法选项实例 find
在指定目录下查找文件
补充说明
find命令 用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时不设置任何参数则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
语法
find(选项)(参数)选项
-amin分钟查找在指定时间曾被存取过的文件或目录单位以分钟计算
-anewer参考文件或目录查找其存取时间较指定文件或目录的存取时间更接近现在的文件或目录
-atime24小时数查找在指定时间曾被存取过的文件或目录单位以24小时计算
-cmin分钟查找在指定时间之时被更改过的文件或目录
-cnewer参考文件或目录查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录
-ctime24小时数查找在指定时间之时被更改的文件或目录单位以24小时计算
-daystart从本日开始计算时间
-depth从指定目录下最深层的子目录开始查找
-empty寻找文件大小为0 Byte的文件或目录下没有任何子目录或文件的空目录
-exec执行指令假设find指令的回传值为True就执行该指令
-false将find指令的回传值皆设为False
-fls列表文件此参数的效果和指定“-ls”参数类似但会把结果保存为指定的列表文件
-follow排除符号连接
-fprint列表文件此参数的效果和指定“-print”参数类似但会把结果保存成指定的列表文件
-fprint0列表文件此参数的效果和指定“-print0”参数类似但会把结果保存成指定的列表文件
-fprintf列表文件输出格式此参数的效果和指定“-printf”参数类似但会把结果保存成指定的列表文件
-fstype文件系统类型只寻找该文件系统类型下的文件或目录
-gid群组识别码查找符合指定之群组识别码的文件或目录
-group群组名称查找符合指定之群组名称的文件或目录
-help或--help在线帮助
-ilname范本样式此参数的效果和指定“-lname”参数类似但忽略字符大小写的差别
-iname范本样式此参数的效果和指定“-name”参数类似但忽略字符大小写的差别
-inuminode编号查找符合指定的inode编号的文件或目录
-ipath范本样式此参数的效果和指定“-path”参数类似但忽略字符大小写的差别
-iregex范本样式此参数的效果和指定“-regexe”参数类似但忽略字符大小写的差别
-links连接数目查找符合指定的硬连接数目的文件或目录
-lname范本样式指定字符串作为寻找符号连接的范本样式
-ls假设find指令的回传值为True就将文件或目录名称列出到标准输出
-maxdepth目录层级设置最大目录层级
-mindepth目录层级设置最小目录层级
-mmin分钟查找在指定时间曾被更改过的文件或目录单位以分钟计算
-mount此参数的效果和指定“-xdev”相同
-mtime24小时数查找在指定时间曾被更改过的文件或目录单位以24小时计算
-name范本样式指定字符串作为寻找文件或目录的范本样式
-newer参考文件或目录查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录
-nogroup找出不属于本地主机群组识别码的文件或目录
-noleaf不去考虑目录至少需拥有两个硬连接存在
-nouser找出不属于本地主机用户识别码的文件或目录
-ok执行指令此参数的效果和指定“-exec”类似但在执行指令之前会先询问用户若回答“y”或“Y”则放弃执行命令
-path范本样式指定字符串作为寻找目录的范本样式
-perm权限数值查找符合指定的权限数值的文件或目录
-print假设find指令的回传值为True就将文件或目录名称列出到标准输出。格式为每列一个名称每个名称前皆有“./”字符串
-print0假设find指令的回传值为True就将文件或目录名称列出到标准输出。格式为全部的名称皆在同一行
-printf输出格式假设find指令的回传值为True就将文件或目录名称列出到标准输出。格式可以自行指定
-prune不寻找字符串作为寻找文件或目录的范本样式;
-regex范本样式指定字符串作为寻找文件或目录的范本样式
-size文件大小查找符合指定的文件大小的文件
-true将find指令的回传值皆设为True
-type文件类型只寻找符合指定的文件类型的文件
-uid用户识别码查找符合指定的用户识别码的文件或目录
-used日数查找文件或目录被更改之后在指定时间曾被存取过的文件或目录单位以日计算
-user拥有者名称查找符和指定的拥有者名称的文件或目录
-version或——version显示版本信息
-xdev将范围局限在先行的文件系统中
-xtype文件类型此参数的效果和指定“-type”参数类似差别在于它针对符号连接检查。参数
起始目录查找文件的起始目录。
实例
# 当前目录搜索所有文件文件内容 包含 “140.206.111.111” 的内容
find . -type f -name * | xargs grep 140.206.111.111根据文件或者正则表达式进行匹配
列出当前目录及子目录下所有文件和文件夹
find .在/home目录下查找以.txt结尾的文件名
find /home -name *.txt同上但忽略大小写
find /home -iname *.txt当前目录及子目录下查找所有以.txt和.pdf结尾的文件
find . \( -name *.txt -o -name *.pdf \)或find . -name *.txt -o -name *.pdf匹配文件路径或者文件
find /usr/ -path *local*基于正则表达式匹配文件路径
find . -regex .*\(\.txt\|\.pdf\)$同上但忽略大小写
find . -iregex .*\(\.txt\|\.pdf\)$否定参数
找出/home下不是以.txt结尾的文件
find /home ! -name *.txt根据文件类型进行搜索
find . -type 类型参数类型参数列表
f 普通文件l 符号连接d 目录c 字符设备b 块设备s 套接字p Fifo
基于目录深度搜索
向下最大深度限制为3
find . -maxdepth 3 -type f搜索出深度距离当前目录至少2个子目录的所有文件
find . -mindepth 2 -type f根据文件时间戳进行搜索
find . -type f 时间戳UNIX/Linux文件系统每个文件都有三种时间戳
访问时间 -atime/天-amin/分钟用户最近一次访问时间。修改时间 -mtime/天-mmin/分钟文件最后一次修改时间。变化时间 -ctime/天-cmin/分钟文件数据元例如权限等最后一次修改时间。
搜索最近七天内被访问过的所有文件
find . -type f -atime -7搜索恰好在七天前被访问过的所有文件
find . -type f -atime 7搜索超过七天内被访问过的所有文件
find . -type f -atime 7搜索访问时间超过10分钟的所有文件
find . -type f -amin 10找出比file.log修改时间更长的所有文件
find . -type f -newer file.log根据文件大小进行匹配
find . -type f -size 文件大小单元文件大小单元
b —— 块512字节c —— 字节w —— 字2字节k —— 千字节M —— 兆字节G —— 吉字节
搜索大于10KB的文件
find . -type f -size 10k搜索小于10KB的文件
find . -type f -size -10k搜索等于10KB的文件
find . -type f -size 10k删除匹配文件
删除当前目录下所有.txt文件
find . -type f -name *.txt -delete根据文件权限/所有权进行匹配
当前目录下搜索出权限为777的文件
find . -type f -perm 777找出当前目录下权限不是644的php文件
find . -type f -name *.php ! -perm 644找出当前目录用户tom拥有的所有文件
find . -type f -user tom找出当前目录用户组sunk拥有的所有文件
find . -type f -group sunk借助-exec选项与其他命令结合使用
找出当前目录下所有root的文件并把所有权更改为用户tom
find .-type f -user root -exec chown tom {} \;上例中 {} 用于与 -exec 选项结合使用来匹配所有文件然后会被替换为相应的文件名。
找出自己家目录下所有的.txt文件并删除
find $HOME/. -name *.txt -ok rm {} \;上例中 -ok 和 -exec 行为一样不过它会给出提示是否执行相应的操作。
查找当前目录下所有.txt文件并把他们拼接起来写入到all.txt文件中
find . -type f -name *.txt -exec cat {} \; /all.txt将30天前的.log文件移动到old目录中
find . -type f -mtime 30 -name *.log -exec cp {} old \;找出当前目录下所有.txt文件并以“File:文件名”的形式打印出来
find . -type f -name *.txt -exec printf File: %s\n {} \;因为单行命令中-exec参数中无法使用多个命令以下方法可以实现在-exec之后接受多条命令
-exec ./text.sh {} \;搜索但跳过指定的目录
查找当前目录或者子目录下所有.txt文件但是跳过子目录sk
find . -path ./sk -prune -o -name *.txt -print⚠️ ./sk 不能写成 ./sk/ 否则没有作用。 忽略两个目录
find . \( -path ./sk -o -path ./st \) -prune -o -name *.txt -print⚠️ 如果写相对路径必须加上./ find其他技巧收集
要列出所有长度为零的文件
find . -empty其它实例
find ~ -name *jpg # 主目录中找到所有的 jpg 文件。 -name 参数允许你将结果限制为与给定模式匹配的文件。
find ~ -iname *jpg # -iname 就像 -name但是不区分大小写
find ~ ( -iname jpeg -o -iname jpg ) # 一些图片可能是 .jpeg 扩展名。幸运的是我们可以将模式用“或”表示为 -o来组合。
find ~ \( -iname *jpeg -o -iname *jpg \) -type f # 如果你有一些以 jpg 结尾的目录呢 为什么你要命名一个 bucketofjpg 而不是 pictures 的目录就超出了本文的范围。我们使用 -type 参数修改我们的命令来查找文件。
find ~ \( -iname *jpeg -o -iname *jpg \) -type d # 也许你想找到那些命名奇怪的目录以便稍后重命名它们最近拍了很多照片所以让我们把它缩小到上周更改的文件
find ~ \( -iname *jpeg -o -iname *jpg \) -type f -mtime -7你可以根据文件状态更改时间 ctime、修改时间 mtime 或访问时间 atime 来执行时间过滤。 这些是在几天内所以如果你想要更细粒度的控制你可以表示为在几分钟内分别是 cmin、mmin 和 amin。 除非你确切地知道你想要的时间否则你可能会在 大于或 - 小于的后面加上数字。
但也许你不关心你的照片。也许你的磁盘空间不够用所以你想在 log 目录下找到所有巨大的让我们定义为“大于 1GB”文件
find /var/log -size 1G或者也许你想在 /data 中找到 bcotton 拥有的所有文件
find /data -owner bcotton你还可以根据权限查找文件。也许你想在你的主目录中找到对所有人可读的文件以确保你不会过度分享。
find ~ -perm -or删除 mac 下自动生成的文件
find ./ -name __MACOSX -depth -exec rm -rf {} \;统计代码行数
find . -name *.java|xargs cat|grep -v ^$|wc -l # 代码行数统计, 排除空行locate
比 find 好用的文件查找工具
补充说明
locate 让使用者可以很快速的搜寻档案系统内是否有指定的档案。其方法是先建立一个包括系统内所有档案名称及路径的数据库之后当寻找时就只需查询这个数据库而不必实际深入档案系统之中了。在一般的 distribution 之中数据库的建立都被放在 crontab 中自动执行。
locate命令可以在搜寻数据库时快速找到档案数据库由updatedb程序来更新updatedb是由cron daemon周期性建立的locate命令在搜寻数据库时比由整个由硬盘资料来搜寻资料来得快但较差劲的是locate所找到的档案若是最近才建立或 刚更名的可能会找不到在内定值中updatedb每天会跑一次可以由修改crontab来更新设定值。(etc/crontab)
locate指定用在搜寻符合条件的档案它会去储存档案与目录名称的数据库内寻找合乎范本样式条件的档案或目录录可以使用特殊字元如”_” 或”?”等来指定范本样式如指定范本为kcpa_ner, locate 会找出所有起始字串为kcpa且结尾为ner的档案或目录如名称为kcpartner若目录录名称为kcpa_ner则会列出该目录下包括 子目录在内的所有档案。
locate指令和find找寻档案的功能类似但locate是透过update程序将硬盘中的所有档案和目录资料先建立一个索引数据库在 执行loacte时直接找该索引查询速度会较快索引数据库一般是由操作系统管理但也可以直接下达update强迫系统立即修改索引数据库。
语法
locate [-d path | --databasepath] [-e | -E | --[non-]existing] [-i |--ignore-case] [-0 | --null] [-c | --count] [-w | --wholename] [-b |--basename] [-l N | --limitN] [-S | --statistics] [-r | --regex ][--regextype R] [--max-database-age D] [-P | -H | --nofollow] [-L |--follow] [--version] [-A | --all] [-p | --print] [--help] pattern...选项
-b, --basename # 仅匹配路径名的基本名称
-c, --count # 只输出找到的数量
-d, --database DBPATH # 使用DBPATH指定的数据库而不是默认数据库 /var/lib/mlocate/mlocate.db
-e, --existing # 仅打印当前现有文件的条目
-1 # 如果 是 1则启动安全模式。在安全模式下使用者不会看到权限无法看到 的档案。这会始速度减慢因为 locate 必须至实际的档案系统中取得档案的 权限资料。
-0, --null # 在输出上带有NUL的单独条目
-S, --statistics # 不搜索条目打印有关每个数据库的统计信息
-q # 安静模式不会显示任何错误讯息。
-P, --nofollow, -H # 检查文件存在时不要遵循尾随的符号链接
-l, --limit, -n LIMIT # 将输出或计数限制为LIMIT个条目
-n # 至多显示 n个输出。
-m, --mmap # 被忽略为了向后兼容
-r, --regexp REGEXP # 使用基本正则表达式--regex # 使用扩展正则表达式
-q, --quiet # 安静模式不会显示任何错误讯息
-s, --stdio # 被忽略为了向后兼容
-o # 指定资料库存的名称。
-h, --help # 显示帮助
-i, --ignore-case # 忽略大小写
-V, --version # 显示版本信息实例
实例1查找和 pwd 相关的所有文件
root ~ # locate pwd
/bin/pwd
/etc/.pwd.lock
/sbin/unix_chkpwd
/usr/bin/pwdx
/usr/include/pwd.h
/usr/lib/python2.7/dist-packages/twisted/python/fakepwd.py
/usr/lib/python2.7/dist-packages/twisted/python/fakepwd.pyc
/usr/lib/python2.7/dist-packages/twisted/python/test/test_fakepwd.py
/usr/lib/python2.7/dist-packages/twisted/python/test/test_fakepwd.pyc
/usr/lib/syslinux/pwd.c32
/usr/share/help/C/empathy/irc-join-pwd.page
/usr/share/help/ca/empathy/irc-join-pwd.page
/usr/share/help/cs/empathy/irc-join-pwd.page
/usr/share/help/de/empathy/irc-join-pwd.page
/usr/share/help/el/empathy/irc-join-pwd.page实例2 搜索 etc 目录下所有以 sh 开头的文件
root ~ # locate /etc/sh
/etc/shadow
/etc/shadow-
/etc/shells实例3搜索etc目录下所有以m开头的文件
root ~ # locate /etc/m
/etc/magic
/etc/magic.mime
/etc/mailcap
/etc/mailcap.order
/etc/manpath.config
/etc/mate-settings-daemon忽略大小写搜索当前用户目录下所有以 r 开头的文件
locate -i ~/r