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. iOS菜鸟总结1

    我从第一次接触OC,我觉得想要学好就必须有提前的知识的储备(比如c,java).这样就可更好了解面向对象的这一思想.学起来就不是很吃力了,本来OC就是比较难学的语言.工欲善其事,必先利其器,Xcode ...

  2. (三)u-boot2013.01.01 for TQ210:《mkconfig分析》

    /* 和分析makefile一样,分析mkconfig同样注重句法分析 */ ############################################################# ...

  3. 精通C#(第6版)

    <精通C#(第6版)> 基本信息 原书名:Pro C# 5.0 and the .NET 4.5 framework,sixth edition 作者: (美)Andrew Troelse ...

  4. XML DTD验证

    XML DTD验证 一.什么是DTD 文档类型定义(DTD:Document Type Definition)可定义合法的XML文档构建模块.它使用一系列合法的元素来定义文档的结构. DTD 可被成行 ...

  5. page80-栈用例-算术表达式求值

    表达式由括号, 运算符和操作数(数字)组成.我们根据以下4中情况从左到右逐个将这些实体送入栈处理. (1)将操作数压入操作数栈: (2)将运算符压入运算符栈: (3)忽略左括号: (4)在遇到右括号时 ...

  6. python连接字符串的方式

    发现Python连接字符串又是用的不顺手,影响速度 1.数字对字符进行拼接 s=""  #定义这个字符串,方便做连接 print type(s) for i in range(10 ...

  7. Hadoop YARN配置参数剖析—RM与NM相关参数

    注意,配置这些参数前,应充分理解这几个参数的含义,以防止误配给集群带来的隐患.另外,这些参数均需要在yarn-site.xml中配置. 1.    ResourceManager相关配置参数 (1) ...

  8. JavaScript之聊天室设计摸拟

    把聊天室的界面先做好,主代码(现在还只能单机模式・_・): window.onload = function(){ var arrIcon = ['http://tva1.sinaimg.cn/cro ...

  9. JavaScript之延迟加载

    本文参阅http://www.appelsiini.net/projects/lazyload Javascript Lazyload延迟加载特效,有效降低HTPP连接次数,提高首屏加载时间 1.增加 ...

  10. ios卡牌游戏项目源码

    上传者fu_sion,源码CardGame,一副牌从中抽取十二张牌,翻开牌可以相同的花色+1 相同的数字+4分 同一张牌翻开后可以盖上(算是一个BUG)就酱紫~~ 项目源码下载:http://code ...