标签:
• locate –通过名字来查找文件
• find –在目录层次结构中搜索文件
我们也将看一个经常与文件搜索命令一起使用的命令,它用来处理搜索到的文件列表:
• xargs –从标准输入生成和执行命令行
另外,我们将介绍两个命令来协助我们探索:
• touch –更改文件时间
• stat –显示文件或文件系统状态
一、locate
只能根据文件名进行查找
二、find——可以基于各种各样的属性,比如应用选项,测试条件,操作
huiubantu@ubuntu:~$ find ~ |wc -l 找出活跃的文件,并计算数量 191
1.测试条件限定
-type限定测试条件
huiubantu@ubuntu:~$ find ~ -type d | wc -l -type d限制只搜索目录 f 限制只搜索文件 c字符设备文件 b快设备文件 l符号链接
88
文件名匹配通配符模式和文件大小
huiubantu@ubuntu:~$ find ~ -type f -name"\*.JPG" -size +1M | wc -l
2.操作符
huiubantu@ubuntu:~$ find ~ \( -type f -not -perm 0600 \) -or \( -type d -not -perm 0700 \) 另外还有-and -not ()
3.预定义操作
-delete | 删除匹配文件 |
-ls | ls-dils |
把匹配文件的全路径名输送到标准输出 | |
-quit | 一旦匹配一个就退出 |
huiubantu@ubuntu:~$ find ~ -type f -name‘*BAK‘ -print
4.用户定义的行为
传统方法是通过-exec行为唤醒随意命令
格式 -execcommand {}; command 就是指一个命令的名字, {} 是当前路径名的符号表示,分号是要求的界定符表明命令结束。
也可以用-ok行为代替-exec
huiubantu@ubuntu:~$ find ~ -tpe f -name ‘foo*‘ -ok ls -l ‘{}‘ ‘;‘ 注意{}和;必须引起来或被转义
5.提高效率
当 -exec 行为被使用的时候,若每次找到一个匹配的文件,它会启动一个新的指定命令的实例。我们可能更愿意把所有的搜索结果结合起来,再运行一个命令的实例,这样就能提高效率
有两种实现方法
1)使用 find 命令自己的一个新功能——通过把末尾的分号改为加号,就激活了 find 命令的一个功能,
huiubantu@ubuntu:~$ find ~ -type f -name ‘foo*‘ -exec ls -l ‘{}‘ +
2)外部命令xargs——它从标准输入接受输入,并把输入转换为一个特定命令的参数列表。
huiubantu@ubuntu:~$ find ~ -type f -name ‘foo\*‘ -print | xargs ls -l
三、返回操练场
1.创建一个包含许多子目录和文件的操练场
huiubantu@ubuntu:~$ mkdir -p playground/dir-{00{1..9},100} 创建了100个目录,每个目录中含有26个空文件 huiubantu@ubuntu:~$ touch palyground/dir-{00{1..9},100}/file-{A..Z} touch命令用来设置或更新文件的访问,更改和修改时间
2.找到我们创建的一百个名为 file-A 的文件实例
huiubantu@ubuntu:~$ find playground -type f -name ‘file-A‘ | wc -l 注意find结果无序,不同于ls,他的排序根据存输设备的布局
3.我们看一下基于文件的修改时间来查找你文件
touch
标签:
原文地址:http://www.cnblogs.com/xiaoxiaohui2015/p/5789030.html