find用整理笔记-附带习题

原址:http://blog.csdn.net/cityzenoldwang/article/details/68951990

Find

语法: find [路径] [参数] 如果不输入路径,查询当前目录

小技巧Tips:

  • 在使用 -maxdepth 参数的时候,如果有多个选项,把 maxdepth 放到路径的后面,其他参数的前面,否则可能会出错。
  • -name 后面养成习惯加双引号,避免出错
  • 如果不指定文件的具体路径,可以写根目录 / ,扩大搜索范围。比如在搜索一个 inode 号的时候,毫无头绪,就可以使用根目录
  • 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/2.txt

                        /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/2.txt

                        /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 可读或可写,均可以匹配。

    -perm /mode(四位),和3位的数字权限规则一致,区别在于特殊权限和普通权限独立思考

    -perm +mode,功能和/一样,
    -path "..." -prune -o [其他参数] -print
        代表排除指定的文件或者目录,其他均为固定写法。注意,如果在排除目录的时候,最后面不能有/符号,√ "/tmp/123"  ×"/tmp/123/"
    -empty   空文件,空目录,
    -false   总是出错的文件
    -fstype  指定文件类型查找,ext3 ext4

Find练习题

  • 1.查找 /tmp 目录下名字为 aming开头的所有文件。

    find /tmp -name "aming*" , 注意这里并不能使用 ^aming

  • 2.查找指定 inode 的文件或目录

    find / -inum 141418

  • 3.找出 tmp 目录下的所有一级子目录

    find /tmp -maxdepth 1 -type d

    • 在root目录下及其最大两层深度的子目录中,查找 passwd 文件

      find /root -maxdepth 3 -name passwd

    • 在第二层和第四层子目录之间查找 passwd 文件

      find . -mindepth 3 -maxdepth 5 -name passwd

  • 4.搜索tmp目录下所属组group1,所属主user1的文件

    find /tmp -type f -user user1 -group group1

  • 5.搜索根目录下的 1.txt 2.txt 和 a 目录

    find / -name 1.txt -o -name 2.txt -o -type d -name a

  • 6.搜索tmp目录下以 a 开头并且以 c 结尾的文件

    find /tmp -name "a*" -a -name "*c" -type f

  • 7.搜索 tmp 目录下,不是以 a 开头,并且大小超过100M的文件

    find /tmp -not -name "a*" -a -name "*txt" -size +100M - tyep f

  • 8.搜索 tmp 目录下,修改时间一年内的文件

    find . -type f -mtime -365

  • 9.搜索目录下,修改时间一年内,不是文件的其他类型

    find . -not -type f -mtime -365

  • 10.搜索目录下,修改时间超过一年的并且大于100M的文件

    find . -type f -not -mtime -365 -a -size +100M

  • 11.列出tmp目录下一年内都没有改变的文件

    find /tmp -type f ! -mtime -365

  • 12.找出 tmp 目录下的所有的一级空目录

    find . -type d -empty

  • 13.搜索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 644

  • 16.在 / 目录下的 etc目录及其子目录下查找 passwd 文件
    find /etc -name passwd
    find / -path -path "/etc*" -name passwd
    
    /etc/passwd
    /etc/pam.d/passwd
    
    • 在根目录下的 etc 以及 tmp 目录内查找 passwd 文件

      cp /etc/passwd /tmp

      find / \( -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/ 目录下所有文件(不包含目录), 并且不包含目录123

      find /tmp/ -path "/tmp/123" -prune -o -type f -print

    -print -path -prune -o 固定格式,一个都不能少 ,表示排除指定的目录或文件

  • 查找/tmp/ 目录下所有文件(不包含目录), 并且不包含目录123和目录234和目录345

    find /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 rm

  • 19.查找类型为 ext4 的文件

find . -fstype ext4

  • 20.查找tmp目录下包含abcde字母的文件,不区分大小

find /tmp -iname abcde 使用find重命名文件

  • 21.用inode 16187430 编号重命名为 newtest

find -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 f

  • 26.找到对组用户具有只读权限的文件,

    find -perm g=r -exec ls -l {} \;
    
    ----r----- 1 root root 0 3月  31 21:50 ./1
    
    find -perm 040 -exec ls -l {} \;
    
  • 27.列出/etc目录及其子目录下的5个最大的文件。

find /etc -exec ls -s {} \; | sort -n -r | head -5

  • 28.列出 /etc 目录及其子目录下5个最小的文件

find /etc -type f -exec ls -s {} \; | sort -n | head -5

  • 29.列出 /etc 目录及其子目录下5个最小的文件,不包含 0 空文件

       find /etc -not -empty -type f -exec ls -s {} \; | sort -n  | head -5
    
       find /etc ! -empty -type f -exec ls -s {} \; | sort -n  | head -5
    
  • 30.find 命令删除大于100M的 .zip 文件

find / -type f -name "*.zip" -size +100M -exec rm -i {} \;

  • 31.列出在1.txt修改之后修改的文件

find -newer 1.txt

  • 32.列出在1.txt 和 test 之间修改的文件

find -newer 1.txt ! -newer test 该命令列出的文件,会包含 test 文件

  • 33.列出在 2012.12.01 到 2012.12.31 修改的文件

    • 思路:手动创建两个文件,并指定时间,创建的文件目录无所谓,在find的时候指定目录即可.
touch -m -t 1212010000 1.txt

touch -m -t 1212312359 2.txt

find / -newer 1.txt ! -newer 2.txt

#find 名配合 alias,实际工作中可用

alias rmc="find . -iname core -exec rm {} \;"
##/删除c程序产生的core文件

alias rmao="find . -iname a.out -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 {} \;"

时间: 2024-10-29 19:12:26

find用整理笔记-附带习题的相关文章

各种排序算法整理(附带习题及代码)

模板部分(想背的就背一下吧,但是不建议……毕竟排序用sort函数就行了,这些排序的算法只是为了锻炼你的思维逻辑能力罢了): 1.选择排序 #include<cstdio> #define N 100000+100 int a[N],n; int main() { scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); for(int i=1;i<n;i++) { int

jQuery整理笔记七----几个经典表单应用

1.文本框获得(失去)焦点 当文本框获得输入焦点时,将该文本框高亮显示,算不得一个应用,仅仅是一个小技巧,能够提高用户体验. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/

sk_buff整理笔记(二、操作函数)

承接上一篇:sk_buff整理笔记(一.数据结构)这一篇要讲的是内核为sk_buff结构提供的一些操作函数. 第一.首先要讲的是sk_buff中的四大指针: 四大指针分别是:head.data.tail.end:这四个指针都是指向了数据区的,数据区中存放的是协议头和数据.head和end指针是每个数据包一样的,也是有这两个指针来确定数据区的大小的.最开始的时候head.data.tail三个指针都是指向一起的,当有协议数据加进来时才更改. 再来说下包的形成,首先是应用层的数据,然后到四层加上四层

jQuery整理笔记八----jQuery的Ajax

Ajax,我一直读的是"阿贾克斯",据当时大学老师讲该读音出处是根据当年风靡欧洲的荷兰足球俱乐部阿贾克斯的名字来的,我觉得说法挺靠谱的. jQuery封装了Ajax的交互过程,用户不需要考虑XMLHttpRequest对象的兼容性问题以及使用XMLHttpRequest建立连接.发送请求.发送方式.接收方式等细节,利用jQuery定义 的几个简单方法,即可轻松实现客户端与服务端异步通信的问题,从而帮助开发人员从繁琐的技术细节中解脱出来,专心于业务层开发工作. 最初始的JavaScrip

jQuery Easy UI整理笔记目录

jQuery Easy UI整理笔记目录 ps:最近对Easy UI比较感兴趣,打算系统的学习一下,前面基础部分的东西很简单,都是参照API去写的,例子也就是随便举的,没有列举项目中的实际应用. 打算基础部分后面的知识多投入点时间,多与项目中的实际相结合一些,也尽量多想象出一些应用场景. 计划最慢每周更新一篇文章. 一.基础组件部分 1. jQuery Easy UI的使用 2. jQuery Easy UI Draggable(拖动)组件 3. jQuery Easy UI Droppable

jQuery整理笔记目录

jQuery整理笔记目录 jQuery整理笔记一----jQuery开始 jQuery整理笔记二----jQuery选择器整理 jQuery整理笔记三----jQuery过滤函数 jQuery整理笔记四----jQuery操作DOM jQuery整理笔记五----jQuery事件 jQuery整理笔记六----jQuery动画 jQuery整理笔记七----几个经典表单应用 jQuery整理笔记八----jQuery的Ajax jQuery整理笔记九----功能性表格开发 jQuery整理笔记目

lucene 索引流程整理笔记

索引的原文档(Document). 为了方便说明索引创建过程,这里特意用两个文件为例: 文件一:Students should be allowed to go out with their friends, but not allowed to drink beer. 文件二:My friend Jerry went to school to see his students but found them drunk which is not allowed. 结果处的索引文件: Docume

jQuery整理笔记九----功能性表格开发

示例中用到的一些图片.插件.样式文件等下载地址:点我进入下载 过去在开发过程中关于table方面的jquery应用仅仅是局限于使用jquery操作table增加一行.删除一列等等操作.今天整理的跟过去用的不一样. 1.uiTableFilter uiTableFilter是一款表格数据行过滤插件,使用很简单,具体用法如下: $.uiTableFilter(table,phrase)  该函数包含两个参数,其中第一个参数为jQuery对象,即为jQuery方法匹配的表格,或者也可以是jQuery匹

jQuery整理笔记文件夹

jQuery整理笔记文件夹 jQuery整理笔记一----jQuery開始 jQuery整理笔记二----jQuery选择器整理 jQuery整理笔记三----jQuery过滤函数 jQuery整理笔记四----jQuery操作DOM jQuery整理笔记五----jQuery事件 jQuery整理笔记六----jQuery动画 jQuery整理笔记七----几个经典表单应用 jQuery整理笔记八----jQuery的Ajax jQuery整理笔记九----功能性表格开发