学习笔记整理——Find命令,附带练习题及答案。

学习笔记整理——Find命令,附带练习题及答案。

2023年7月26日发(作者:)

学习笔记整理——Find命令,附带练习题及答案。Find语法: find [路径] [参数] 如果不输⼊路径,查询当前⽬录⼩技巧Tips:1. 在使⽤ -maxdepth 参数的时候,如果有多个选项,把 maxdepth 放到路径的后⾯,其他参数的前⾯,否则可能会出错。2. -name 后⾯养成习惯加双引号,避免出错3. 如果不指定⽂件的具体路径,可以写根⽬录 / ,扩⼤搜索范围。⽐如在搜索⼀个 inode 号的时候,毫⽆头绪,就可以使⽤根⽬录4. find 可以和正则表达式匹配⼀起使⽤ !取反,*通配符参数-name ⽂件名字-iname 忽略⽂件名的⼤⼩写,匹配所有⼤⼩写字母-type f⽂件,d⽬录,l连接⽂件,b块设备,c串⾏端⼝设备-size 通过⽂件⼤⼩查找-inum 查找 inode

-user 指定属主,也可以使⽤ uid-group 指定⽤户组,也可以使⽤ gid-*time mtime 创建或更改时间;atime 访问时间;ctime⽂件inode号被修改,-*min mmin ±n,⼤于⼩于 n 分钟-mtime +365 创建或更改时间,⼤于365天的-mtime -10 创建或更改时间,⼩于10天-atime +365 访问或读取时间,⼤于365天-atime -10 访问或读取时间,⼩于10天-o 或者-a 并且-not 查找不满⾜条件的⽂件,⽤在特定的条件之前-mindepth 指定⽬录的开始深度-mindepth 0 不限制-mindepth 1 从当前⽬录及其内容开始/tmp/link/a/1/tmp//tmp/2-mindepth 2 从⼀级⼦⽬录内容开始,当前⽬录的⽂件和⽬录不再范围内/tmp/link/3/tmp/link/a/2-maxdepth 指定⽬录的最⼤深度-maxdepth 0-maxdepth 1 只查⽬录本⾝及其内部⽂件,包括⼀级⽬录本⾝/tmp/2/tmp/3-maxdepth 2 ⽬录内的⽂件,包括⽬录下的⼀级⼦⽬录及其⽂件/tmp/link/2/tmp/link/3/tmp//tmp/harda/tmp/2-perm 指定⽂件权限

-perm mode,匹配项必须严格匹配此权限-perm -mode,匹配项必须不少于此权限。匹配⼤于此权限的⽂件-perm /mode,匹配项中 任何⼀组包含要求权限中的任意⼀个 就可以,仅限于普通权限,相对于单独的rwx ⾥⾯的任意⼀个权限,并⾮ user group others 654⾥⾯的 6 5 4 任意权限。如果权限使 644,转换为⼆进制 110 100 100, 那么找到的⽂件只需匹配到任意⼀个 1 即可,即 user 可读或可写、group 可读或可写、other 可读或可写,均可以匹配。或可写、other 可读或可写,均可以匹配。-perm /mode(四位),和3位的数字权限规则⼀致,区别在于特殊权限和普通权限独⽴思考-perm +mode,功能和/⼀样,-path "..." -prune -o [其他参数] -print ... 代表排除指定的⽂件或者⽬录,其他均为固定写法。注意,如果在排除⽬录的时候,最后⾯不能有/符号,√"/tmp/123" ×"/tmp/123/"。-empty 空⽂件,空⽬录,-false 总是出错的⽂件-fstype 指定⽂件类型查找,ext3 ext4Find练习题1.查找 /tmp ⽬录下名字为 aming开头的所有⽂件。find /tmp -name "aming*" 注意这⾥并不能使⽤ ^aming2.查找指定 inode 的⽂件或⽬录find / -inum 1414183.找出 tmp ⽬录下的所有⼀级⼦⽬录find /tmp -maxdepth 1 -type d 在root⽬录下及其最⼤两层深度的⼦⽬录中,查找 passwd ⽂件find /root -maxdepth 3 -name passwd 在第⼆层和第四层⼦⽬录之间查找 passwd ⽂件find . -mindepth 3 -maxdepth 5 -name passwd4.搜索tmp⽬录下所属组group1,所属主user1的⽂件find /tmp -type f -user user1 -group group15.搜索根⽬录下的 和 a ⽬录 find / -name -o -name -o -type d -name a6. 搜索tmp⽬录下以 a 开头并且以 c 结尾的⽂件 find /tmp -name "a*" -a -name "*c" -type f7. 搜索 tmp ⽬录下,不是以 a 开头,并且⼤⼩超过100M的⽂件 find /tmp -not -name "a*" -a -name "*txt" -size +100M -tyep f8. 搜索 tmp ⽬录下,修改时间⼀年内的⽂件 find . -type f -mtime -3659. 搜索⽬录下,修改时间⼀年内,不是⽂件的其他类型 find . -not -type f -mtime -36510.搜索⽬录下,修改时间超过⼀年的并且⼤于100M的⽂件 find . -type f -not -mtime -365 -a -size +100M11.列出tmp⽬录下⼀年内都没有改变的⽂件 find /tmp -type f ! -mtime -36512.找出 tmp ⽬录下的所有的⼀级空⽬录find . -type d -empty13.搜索tmp⽬录下名称包含“*.txt"的⽬录,或者包含"*.txt"并且权限为777的⽂件或⽬录find /tmp -name *.txt -a ( -perm 777 -o -type d )

-a and意思14.查找所有的隐藏⽬录find . -type d -name ".*"15.搜索当前⽬录下10天以前的⽂件,或者权限为644的的⽂件和⽬录find . -type f -mtime +10 -o -perm 64416.在 / ⽬录下的 etc⽬录及其⼦⽬录下查找 passwd ⽂件find /etc -name passwdfind / -path -path "/etc*" -name passwd/etc/passwd/etc/pam.d/passwd

在根⽬录下的 etc 以及 tmp ⽬录内查找 passwd ⽂件cp /etc/passwd /tmpfind / ( -path "/etc*" -o -path "/tmp*" ) -name passwd在所有名为 general 的⽬录下查找 .stp 结尾的⽂件find / -path "*/general/*" -name "*.stp"

找到 usr ⽬录下,并且在 applications ⼦⽬录⾥⾯以 .cache 结尾的⽂件。假设并不知道 applications 的绝对路径,并且⽬录是第 10 层甚⾄第 100 层⽬录,只知道绝对路径以 /usr/local 开头⽅法⼀:find /usr/local -name applications -type d

在⽤上⾯找到的绝对路径去执⾏ find ....... -name "*.cache"⽅法⼆:

find /usr/local -path "*share*" -name "*.cache"

NOTE: -path ".." ,表⽰ path 路径⾥⾯包含指定的字符。17.查找除 /etc ⽬录及其⼦⽬录下的,仍在根⽬录的 passwd ⽂件find / -path "/etc" -prune -o -name passwd -print查找/tmp/ ⽬录下所有⽂件(不包含⽬录), 并且不包含⽬录123find /tmp/ -path "/tmp/123" -prune -o -type f -print-print -path -prune -o 固定格式,⼀个都不能少 ,表⽰排除指定的⽬录或⽂件查找/tmp/ ⽬录下所有⽂件(不包含⽬录), 并且不包含⽬录123和⽬录234和⽬录345find /tmp/ ( -path "/tmp/123" -o -path "/tmp/234" -o -path "/tmp/345" ) -prune -o -type f -print注意,如果是查找⽬录时,-path 后⾯的⽬录名⼀定不要带/ 如 写成 -path "/tmp/123/" 就错了,⽽查找⽂件时,带/ 没有问题。18.删除tmp⽬录下所有⽂件find /tmp/ -type f |xargs rm19.查找类型为 ext4 的⽂件find . -fstype ext420.查找tmp⽬录下包含abcde字母的⽂件,不区分⼤⼩find /tmp -iname abcde使⽤find重命名⽂件21.⽤inode 16187430 编号重命名为 newtestfind -inum 16187430 -exec mv {} new-test-file-name ;22.给tmp⽬录下的所有⽂件增加.bak后缀find /tmp/ -type f |xargs -i {} {}.bak-i 把签名列出的⽂件⼀个个的处理{} 表⽰⼀次⼀个对象,⽐如find出来很多⾏,每次处理⼀⾏,⽤{}代表这⼀⾏23.找到具有组读权限的⽂件和⽬录find . -perm -g=r -exec ls -l {} ; -g=r 会模糊匹配,只要含有 r 权限的都会列出来24.找到具有组读权限和写权限的⽂件和⽬录find . -perm -g=r -a -perm -g=w -type f

25.搜索具有⽤户读写可执⾏权限的⽬录find . -perm -u=r -a -perm -u=w -a -perm -u=x -type f26.找到对组⽤户具有只读权限的⽂件,find -perm g=r -exec ls -l {} ;----r----- 1 root root 0 3⽉ 31 21:50 ./1find -perm 040 -exec ls -l {} ;27.列出/etc⽬录及其⼦⽬录下的5个最⼤的⽂件。find /etc -exec ls -s {} ; | sort -n -r | head -528.列出 /etc ⽬录及其⼦⽬录下5个最⼩的⽂件find /etc -type f -exec ls -s {} ; | sort -n | head -529.列出 /etc ⽬录及其⼦⽬录下5个最⼩的⽂件,不包含 0 空⽂件find /etc -not -empty -type f -exec ls -s {} ; | sort -n | head -5find /etc ! -empty -type f -exec ls -s {} ; | sort -n | head -5

命令删除⼤于100M的 .zip ⽂件find / -type f -name "*.zip" -size +100M -exec rm -i {} ;31.列出在修改之后修改的⽂件find -newer 32.列出在 和 test 之间修改的⽂件find -newer ! -newer test 该命令列出的⽂件,会包含 test ⽂件33.列出在 2012.12.01 到 2012.12.31 修改的⽂件思路,⼿动创建两个⽂件,⽂件⽬录⽆所谓,修改时间touch -m -t 1212010000 ch -m -t 1212322359 d / -newer ! -newer 配合 alias,实际⼯作中可⽤alias rmc="find . -iname core -exec rm {} ;" 删除c程序产⽣的core⽂件alias rmao="find . -iname -exec rm {} ;"alias rm100m="find / -type f -name *.tar -size +100M -exec rm -i {} ;"alias rm1g="find / -type f -name *.tar -size +1G -exec rm -i {} ;"alias rm2g="find / -type f -name *.tar -size +2G -exec rm -i {} ;"alias rm5g="find / -type f -name *.tar -size +5G -exec rm -i {} ;"找到具有组读权限的⽂件find ⼯作中最常⽤的命令find /path -type[f d]-mtime [+-n] -name "*log*" -size +100M |xargs rm -rffind /path -type[f d]-mtime [+-n] -name "*name*" -size -100M -exec rm -rf {} ;find . -type d -o ( -type f -mtime +7 )

发布者:admin,转转请注明出处:http://www.yc00.com/news/1690361371a337832.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信