find命令小结

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命令小结,布布扣,bubuko.com

时间: 2024-12-07 20:20:41

find命令小结的相关文章

Lniux常见的压缩/解压命令小结

转载请注明: 导航制导与控制实验室 2014年12月16日 在linux开发过程中,经常会遇资料的打包/解包.压缩/解压:本文我将在linux系统中常用的命令进行了整理和分类,内容如下: 1.tar 命令,主要是对Dir先归档,在借助其他命令处理归档文件: 2.单个文件的压缩命令,对单个文件进行处理的命令,有时也可以借助tar命令对目录先打包,再进行压缩: 3.zip.rar压缩命令,即可对单个文件也可对目录进行压缩处理,该方法利于不同操作系统的处理: 该文章只是作者本人的理解,有些命令还会验证

Cisco路由器auto secure命令小结

路由器命令auto secure用起来比较方便,而且可以关闭一些不安全的服务和启用一些安全的服务.这里对这个命令做了一个总结.(注:ios版本为:12.3(1)以上才支持使用) 总结如下:     1.关闭一些全局的不安全服务如下: Finger PAD Small Servers Bootp HTTP service Identification Service CDP NTP Source Routing 2.开启一些全局的安全服务如下: PassWord-encryption servic

Linux sed命令小结

1.什么是sed sed,流编辑器,即stream editor.它可以将文本文件的每一行读取到内存,即所谓sed的模式空间,在这个模式空间中可以进行编辑并输出. 2.sed的使用格式 sed [options] "AdressCommand" file1,file2,... 说明: a.Adress实际上是用来确定编辑文件的范围,可以是精确的某一行,也可以是从某一行到某一行,也   可以用正则进行过滤匹配. b.Command表示将符合Address的行进行XXX操作.注意默认情况下

Linux后台进程管理的一些命令小结

Linux后台进程管理的一些命令:fg.bg.jobs.&.ctrl + z命令,供大家学习参考 一. &加在一个命令的最后,可以把这个命令放到后台执行 ,如gftp &, 二.ctrl + z可以将一个正在前台执行的命令放到后台,并且处于暂停状态,不可执行 三.jobs查看当前有多少在后台运行的命令jobs -l选项可显示所有任务的PID,jobs的状态可以是running, stopped, Terminated,但是如果任务被终止了(kill),shell 从当前的shell

Oracle 常用命令小结

1.当前数据库中查看建表语句 select dbms_metadata.get_ddl('TABLE','表名') from dual; 2. Oracle 常用命令小结,布布扣,bubuko.com

Linux常用命令小结(续)

20. mysql mysql --host=127.0.0.1 --port=3306 --database=test --user=test --password=test --default-character-set=utf8 21. 脚本求两个文件的相同集合 test1   test2 1           2 2           3 3           4 cat test1 test2 | sort | uniq -d (result: 2 3) cat test1 te

MySQL 数据库常用命令小结

1.MySQL常用命令 create database name; 创建数据库 use databasename; 选择数据库 drop database name 直接删除数据库,不提醒 show tables; 显示表 describe tablename; 表的详细描述 select 中加上distinct去除重复字段 mysqladmin drop databasename 删除数据库前,有提示. 显示当前mysql版本和当前日期 select version(),current_dat

[Shell&Mac&Environment variables]自己常用的Mac(或者说Linux)Shell命令小结,含Mac使用zsh shell的环境变量的有关配置方法

今天在使用tomcat的配置的时候,我用的mac,要是用到一些命令去配置tomcat. 问题来了: 我每次要去启动tomcat服务特别麻烦,因为我要先进入tomcat所在的文件目录,或者不进入使用~/,但是因为我把tomcat放到了一个比较“深“的文件夹里,所以命令显得又丑又长. 问题解决方案: 1.使用环境变量(修改.bashrc的方法) a.先查看自己的Mac目前正在用的是什么shell echo $SHELL 返回结果类似如下图 这里我是zsh,,也许你是bash,不过没关系,配置环境变量

sed与awk命令小结

1.sed命令小结 Sed是一个非交互式文本编辑器,它可对文本文件和标准输入进行编辑,标准输入可以是来自键盘输入.文件重定向.字符串.变量,甚至来自管道的文本.Sed从文本的一个文本行或标准输入中读取数据,将其复制到缓冲区,然后读取命令行或脚本的第一个命令,对此命令要求的行号进行编辑,重复此过程,直到命令行或脚本中的所有命令都执行完毕.相对于vi等其他文本编辑器,sed可以一次性处理所有的编辑任务,显得非常高效,为用户节省了大量的时间. 1. 语法:sed [OPTION]... {script