find命令小结

find命令用于在系统中查找文件,配合 -exec 选项或 xargs命令还能对查找到得文件执行一些列的自动化操作。

基本格式:find [-H] [-L] [-P] [path...] [expression]

path指定起始搜索路径,可以指定多个,exprssion表示搜索表达式,包含选项及选项参数。

[TOC]

表达式

-depth n (mac os)
: 指定只遍历深度为 n 的目录(相对起始目录),例如 1 表示只在当前目录搜索,2 表示只在当前目录的子目录中搜索,以此类推。

-maxdepth n
: 指定最大遍历深度为 n。

-maxdepth n
: 指定最小遍历深度为 n。

-name pattern
: 搜索文件名匹配 pattern 的文件,例如 '*.txt' 匹配所有以 '.txt' 结尾的文件。

-path pattern
: 搜索路径名匹配 pattern 的文件。

-type t
: 搜索文件类型为 t 的文件。t 的可选值为:

    b  block special(块设备文件)
c character special(字符设备文件)
d directory(目录)
f regular file(普通文件)
l symbolic link(符号链接)
p FIFO(管道)
s socket(套接字)

-ls
: 输出结果包括权限,大小,路径,创建者,创建时间等信息,类似命令 ls -dgils的输出结果。

i 前缀
: 有很多带 i 前缀的选项,表示忽略大小写。例如 -iname-ilname, -ipath, -iregex, -inum等。

-exec command [argument ...] ;
: 执行命令 command,执行的上下文路径为搜索起始路径,这个表达式必须已分号结束。command可以带多个参数,如果命令名字或者参数名字出现 '{}' ,'{}'将会被当前文件的路径代替。需要注意的是在shell中执行此命令的时候,需要转义分号,可以用引号引号引起来或者在分号前面加 “\”号。

-execdir command [argument ...] ;
: 同 -exec,区别是执行命令的上下文路径是当前文件所在的路径。

关于输出

输出的文件路径格式跟指定的起始路径格式相关,如果起始路径的格式是相对路径,输出的结果就是相对路径,如果起始路径是绝对路径,输出的结果也是绝对路径。

$ pwd
/tmp
$ find . -name '*.txt'
./1.txt
./2.txt
./3.txt
$ find /tmp -name '*.txt'
/tmp/1.txt
/tmp/2.txt
/tmp/3.txt

基本用法举例

使用 '-exec' 执行自动化操作

  • 把找出的文件拷贝到另外一个目录

    # 先创建几个文件和目录
    $ touch 1.txt 2.txt 3.txt
    $ mkdir xxx $ find . -maxdepth 1 -name '*.txt' -exec cp {} xxx \;
    $ ls xxx
    1.txt 2.txt 3.txt # 这个更有趣,只要出现{}的地方都被当前文件的路径替换掉
    $ find . -maxdepth 1 -name '*.txt' -exec cp {} xxx/{}.bak \;
    $ ls xxx
    1.txt 1.txt.bak 2.txt 2.txt.bak 3.txt 3.txt.bak # 创建目录也可以这样
    $ rm -rf xxx
    $ makdir xxx && find . -maxdepth 1 -name '*.txt' -exec cp {} xxx \;
    $ ls xxx
    1.txt 2.txt 3.txt

注意的是,当把文件拷贝到 xxx 目录后,find 继续找 xxx目录下的 .txt 文件,然后执行拷贝,相当于:

$ cp xxx/1.txt xxx/1.txt

因为是同一个文件,所以会打印出警告信息,这里用 “-maxdepth 1” 指定只在起始目录查找,从而避免在 xxx 目录中查找。

find命令小结的更多相关文章

  1. Solaris 命令 小结

    Solaris 命令 小结 prstat -a 系统进程监控 Solaris 10默认的shell是sh,可以改成bash #useradd -m -d /home/dave dave -s /bin ...

  2. 常用Linux命令小结

    常用Linux命令小结 Linux下有很多常用的很有用的命令,这种命令用的多了就熟了,对于我来说,如果长时间没有用的话,就容易忘记.当然,可以到时候用man命令查看帮助,但是,到时候查找的话未免有些临 ...

  3. (转载)linux下tar.gz、tar、bz2、zip等解压缩、压缩命令小结

    linux下tar.gz.tar.bz2.zip等解压缩.压缩命令小结 bz2 tgz z等众多压缩文件的压缩与解压方法,需要的朋友可以参考下 1) Linux下最常用的打包程序就是tar了,使用ta ...

  4. [转]MySQL数据库备份和还原的常用命令小结

    MySQL数据库备份和还原的常用命令小结,学习mysql的朋友可以参考下: 备份MySQL数据库的命令 mysqldump -hhostname -uusername -ppassword datab ...

  5. Nslookup命令小结

    Nslookup命令小结 0.nslookup的定义 Nslookup是由微软发布用于对DNS服务器进行检测和排错的命令行工具.   两种模式: 一.非交互模式     nslookup –qt=类型 ...

  6. [转帖]Windows批处理(cmd/bat)常用命令小结

    Windows批处理(cmd/bat)常用命令小结 非常值得学习的文档 先放这里 有时间做实验, 转载自:“趣IT”微信公共号 前言 批处理文件(batch file)包含一系列 DOS命令,通常用于 ...

  7. [转帖]Linux 硬件和系统配置查看命令小结

    https://blog.csdn.net/strongwangjiawei/article/details/8208825 转帖了不少 发现自己记住的还是不多.. Linux 硬件和系统配置查看命令 ...

  8. docker命令小结

    文档:docker命令小结.note链接:http://note.youdao.com/noteshare?id=54015b76db9ae764182cb921e348b7fc&sub=DD ...

  9. gdb命令小结

    GDB命令小结 gdb <filename> : 调试指定程序文件 r : run 的简写,运行被调试程序, 如果此前没有下过断点,则执行完整个程序:如果有断点, 则程序暂停在第一个可用断 ...

随机推荐

  1. C#实现DNS解析服务

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAnUAAAENCAIAAADmDAQyAAAat0lEQVR4nO3dbXRU9YHH8ftq2+1uT7

  2. 一次PostgreSql数据迁移,使用nodejs来完成

    2014-02-08 XX开放平台不允许使用站外的服务器了,可是我们的app都在站外,数据库也在站外,全都要求迁移到其云主机上(坑爹啊).我们在其云主机上仅有有限的资源,而且也有在运行中的数据库,要做 ...

  3. iOS - 导航控制器

    1.导航控制器 self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; self.window.bac ...

  4. Oracle 基础 <2> --函数

    一:函数的定义 函数是用于返回特定数据的PL/SQL程序块 (函数必须返回一个值) 语法: create [or replace] function function_name--函数名称 [(par ...

  5. 给力的轻量级JavaScript动画框架 - jsMorph

    jsMorph 是一个独立的轻量级 JavaScript 动画框架,可以用它来操纵多个 HTML 元素的样式,实现动画效果.此框架会自动检测起始位置.转换单位.调整渲染的速度,以此来获得更流畅的渲染体 ...

  6. 瀑布流插件(jquery.masonry.js)

    什么是瀑布流?去看看Pinterest(这才是鼻祖),Mark之,蘑菇街,点点网,还有腾讯的微博广场吧.随着页面滚动条向下滚动,还会不断加载数据块并附加至当前尾部. Masonry是一款很好用的jqu ...

  7. jQuery阻止事件冒泡的例子

    下面给给各位朋友稍加整理了一jquery中阻止事件冒泡的一些例子,我们知道JQuery 提供了两种方式来阻止事件冒泡,但我们简单的利用它来做一些应用可能不深入或不理解,下面整理了更详细的方法,有兴趣的 ...

  8. 剑指Offer23 二叉树中和为sum的路径

    /************************************************************************* > File Name: 23_FindPa ...

  9. linux中crontab和at

    1. Red Hat的发行版本中,通常还可以使用工具ntsysv设置服务的自启动状态. #类似chkonfig 服务名 on|off 2.系统服务脚本目录:/etc/init.d 3.ps: -a:显 ...

  10. C# 短信猫(SMS cat) 操作源码开发经验

    我曾经开发的某项目需要使用短信猫模块,要求使用C#编程操作.能独立使用的动态链接库之一就是网上流传的sms.dll,但它的功能较少,不能满足需求,鉴于一时找不到合适的完整代码,我深入研究了短信协议,借 ...