find命令用法

Find

find-在目录层次结构中搜索文件

用法:find [-H] [-L] [-P] [-D debugopts] [-Olevel] [starting-point...][expression]

 

pathname表示find命令所查找的文件或目录的路径。例如:/home/tools/tongyan

 

-print: find命令将匹配的文件输出到标准输出。
-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' { } \;,注意{ }和\;之间的空格。
-ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。

 

find常用命令格式:

 

-name   filename             #查找名为filename的文件
-perm                             #按执行权限来查找
-user    username            #按文件属主来查找
-group groupname           #按组来查找
-mtime   -n +n                #按文件更改时间来查找文件,-n指n天以内,+n指n天以前
-atime    -n +n                #按文件访问时间来查GIN: 0px">

 

-ctime    -n +n                #按文件创建时间来查找文件,-n指n天以内,+n指n天以前

 

-nogroup                        #查无有效属组的文件,即文件的属组在/etc/groups中不存在
-nouser                          #查无有效属主的文件,即文件的属主在/etc/passwd中不存
-newer   f1 !f2                # 找文件,-n指n天以内,+n指n天以前 
-ctime    -n +n               #按文件创建时间来查找文件,-n指n天以内,+n指n天以前 
-nogroup                       #查无有效属组的文件,即文件的属组在/etc/groups中不存在
-nouser                         #查无有效属主的文件,即文件的属主在/etc/passwd中不存
-newer   f1 !f2               #查更改时间比f1新但比f2旧的文件
-type    b/d/c/p/l/f         #查是块设备、目录、字符设备、管道、符号链接、普通文件
-size      n[c]                 #查长度为n块[或n字节]的文件
-depth                          #使查找在进入子目录前先行查找完本目录
-fstype                         #查更改时间比f1新但比f2旧的文件
-type    b/d/c/p/l/f        #查是块设备、目录、字符设备、管道、符号链接、普通文件
-size      n[c]                #查长度为n块[或n字节]的文件
-depth                         #使查找在进入子目录前先行查找完本目录
-fstype                        #查位于某一类型文件系统中的文件,这些文件系统类型通常可 在/etc/fstab中找到
-mount                       #查文件时不跨越文件系统mount点
-follow                        #如果遇到符号链接文件,就跟踪链接所指的文件
-cpio                          #查位于某一类型文件系统中的文件,这些文件系统类型通常可 在/etc/fstab中找到
-mount                       #查文件时不跨越文件系统mount点
-follow                        #如果遇到符号链接文件,就跟踪链接所指的文件
-cpio                          #对匹配的文件使用cpio命令,将他们备份到磁带设备中
-prune                       #忽略某个目录

 

 

 

下面具体说明

 

查找方式有很多种,比如按文件类型(-type),文件名(-name),文件属主(-user),文件所属组)(-group),文件权限(-perm),文件长度(-size),文件修改时间(-mtime)等查找。

 

文件类型包括:d  目录文件。

 

                    l  符号链接(指向另一个文件,类似于瘟下的快捷方式) 。 
                    s  套接字文件。
                    b  块设备文件,二进制文件。
                    c  字符设备文件。
                    p  命名管道文件。
                    -  普通文件,或更准确地说,不属于以上几种类型的文件。

 

文件权限包括:r    读文件

 

                    w   写文件

 

                    x    执行文件操作

 

(1)按文件类型查找

 

      find test1 -type d

 

 

(2)按文件名查找

 

   find test1 -name test2

 

 

(3)按文件属主

 

  find test1 -user wangmengting

 

 

(4)按文件所属组

 

find test1 -group wangmengting

 

 

(5)按文件修改时间

 

find test1 -mtime -1

 

 

其他的就不一一演示了。

 

注意:那如果查找出来的文件太多,可用以下方式进行显示。例如:

  -print :将查找到的匹配的文件输出到标准输出

    find /home -type f -print

         此外,还可以对文件进行额外的操作。例如:

  -exec :将查找到的文件进行额外的动作

    find /test1 -name “test2.txt” -exec rm {} \;      

    {}:指的是find找到的内容,即找到的结果会被放到{}的位置中;

   -exec 到 \; :是关键字代表find额外动作的开始(-exec)到(\;)结束,这中间的就是find指令内的额外动作,在上面例子中就是【 rm {} 】;

例题

把/data 目录及其子目录下所有以扩展名.txt结尾的文件中包含oldgirl的字符全部替换为oldboy。

root@luo-X550WE:~# find /oldboy -type f -name '*.log' -size +1M -mtime -7 -exec mv {} /tmp \;       

exec解释:

-exec  参数后面跟的是command命令,它的终止是以;为结束标志的,所以这句命令后面的分号是不可缺少的,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠。

{}   花括号代表前面find查找出来的文件名。

使用find时,只要把想要的操作写在一个文件里,就可以用exec来配合find查找,很方便的。在有些操作系统中只允许-exec选项执行诸如l s或ls -l这样的命令。大多数用户使用这一选项是为了查找旧文件并删除它们。建议在真正执行rm命令删除文件之前,最好先用ls命令看一下,确认它们是所要删除的文件。 exec选项后面跟随着所要执行的命令或脚本,然后是一对儿{ },一个空格和一个\,最后是一个分号。为了使用exec选项,必须要同时使用print选项。如果验证一下find命令,会发现该命令只输出从当前路径起的相对路径及文件名。

 

 

 

 

  

  

转载于:https://www.cnblogs.com/ls-king/p/10241426.html

<think>我们被要求详细解释Linux/Unix中的find命令用法。根据引用内容,find命令用于在目录层次结构中搜索文件,并可以对匹配的文件执行操作。以下是详细解释: 1. **基本语法**: ``` find [path...] [expression] ``` - `path`:指定开始搜索的目录路径,可以是多个路径,默认为当前目录。 - `expression`:由选项、测试和操作组成,用于指定搜索条件和操作。 2. **常用选项(表达式)**: - **按名称查找**:使用`-name`选项,后跟文件名模式(支持通配符,需用引号括起来)。 示例:查找当前目录及其子目录下所有`.txt`文件: ``` find . -name "*.txt" ``` - **按类型查找**:使用`-type`选项,后跟文件类型标识符。 - `f`:普通文件 - `d`:目录 - `l`:符号链接 示例:查找当前目录下的所有目录: ``` find . -type d ``` - **按时间查找**: - `-atime n`:访问时间(天),`-n`表示n天以内,`+n`表示n天以前。 - `-mtime n`:修改时间(天)。 - `-amin n`:访问时间(分钟)。 - `-mmin n`:修改时间(分钟)。 示例:查找系统中最后10分钟访问的文件: ``` find / -amin -10 ``` 查找系统中最后48小时访问的文件: ``` find / -atime -2 ``` - **按大小查找**:使用`-size`选项,后跟文件大小。 - `c`:字节 - `k`:千字节 - `M`:兆字节 - `G`:千兆字节 示例:查找大于1MB的文件: ``` find / -size +1M ``` - **按用户/组查找**: - `-user username`:按文件所有者查找。 - `-group groupname`:按文件所属组查找。 - `-nouser`:查找没有有效所有者的文件。 - `-nogroup`:查找没有有效组的文件。 示例:查找属于用户`fred`的文件: ``` find / -user fred ``` 3. **执行操作**: - `-print`:默认操作,打印匹配的文件路径(可省略)。 - `-delete`:删除匹配的文件(谨慎使用)。 - `-exec command {} \;`:对每个匹配的文件执行指定的命令。`{}`会被替换为文件名,命令以`\;`结束。 示例:删除所有`.swp`文件: ``` find . -type f -name "*.swp" -delete ``` 或者使用`-exec`: ``` find . -type f -name "*.swp" -exec rm {} \; ``` 注意:如果命令有多个参数,且可以接受多个文件时,可以用`+`代替`\;`,这样find会一次性传递多个文件给命令,提高效率。 示例:使用`chmod`修改权限: ``` find . -type f -name "*.sh" -exec chmod 755 {} \; ``` - `-ok`:与`-exec`类似,但在执行命令前会询问用户确认。 4. **组合条件**: - `-a` 或 `-and`:与(默认,可省略)。 - `-o` 或 `-or`:或。 - `!` 或 `-not`:非。 - 使用括号分组:需用转义`\( ... \)`。 示例:查找当前目录下所有`.txt`或`.pdf`文件: ``` find . \( -name "*.txt" -o -name "*.pdf" \) ``` 5. **其他有用选项**: - `-maxdepth n`:指定最大搜索深度(目录层数)。 - `-mindepth n`:指定最小搜索深度。 - `-empty`:查找空文件或目录。 示例:查找当前目录下(不包括子目录)的空文件: ``` find . -maxdepth 1 -empty -type f ``` **注意事项**: - 使用`find`命令时,尤其是使用`-delete`或`-exec rm`删除文件时,务必先测试条件,避免误删。 - 搜索整个文件系统(如`find /`)可能需要较长时间,且需要root权限才能访问所有目录。 以上是`find`命令的常用用法详解,结合了多个引用内容[^1][^2][^3][^4][^5]。</think>### `find` 命令在 Linux/Unix 系统中的用法详解 `find` 是 Linux/Unix 系统中用于递归搜索文件和目录的核心工具,支持按名称、类型、时间、大小等条件过滤,并能对匹配项执行操作。以下是详细用法--- #### **一、基本语法** ```bash find [搜索路径] [表达式] [操作] ``` - **搜索路径**:默认为当前目录(`.`),可指定多个路径(如 `/home /var`) - **表达式**:定义搜索条件(如名称、类型) - **操作**:对匹配项执行命令(如删除、打印) --- #### **二、常用搜索条件** 1. **按名称/通配符搜索** ```bash find /etc -name "*.conf" # 精确匹配名称 find ~ -iname "README*.md" # -iname 忽略大小写 ``` 2. **按文件类型过滤** ```bash find /var -type f # f: 普通文件 find . -type d # d: 目录 find /tmp -type l # l: 符号链接 ``` 3. **按时间筛选** ```bash find / -mtime -1 # 24小时内修改过的文件[^3] find /log -amin -10 # 最后10分钟访问的文件[^3] find ~ -newer reference.txt # 比参考文件更新的文件 ``` 4. **按大小搜索** ```bash find / -size +1G # 大于1GB的文件[^4] find . -size -100k # 小于100KB的文件 find /tmp -empty # 空文件/目录[^3] ``` 5. **按用户/权限过滤** ```bash find /home -user alice # 属于用户alice的文件[^3] find / -group www-data # 属于组www-data find . -perm 644 # 权限精确匹配644 ``` --- #### **三、执行操作(Action)** 1. **默认操作**:打印路径(等效于 `-print`) ```bash find /etc -name "*.conf" # 打印所有.conf文件路径 ``` 2. **删除匹配项** ```bash find . -name "*.tmp" -delete # 安全删除[^1] ``` 3. **执行自定义命令(`-exec`)** ```bash # 将旧日志文件压缩 (注意 {} 和 \; 的用法) find /log -name "*.log" -mtime +30 -exec gzip {} \;[^5] ``` 4. **交互式确认(`-ok`)** ```bash find ~ -type f -size +100M -ok rm {} \; # 删除前确认 ``` 5. **多文件聚合处理(`+`替代`\;`)** ```bash # 一次性传递多个文件给 chmod (更高效) find . -name "*.sh" -exec chmod 755 {} +[^5] ``` --- #### **四、高级组合技巧** 1. **逻辑运算符** ```bash # 查找 .jpg 或 .png 文件(-o 表示 OR) find pics \( -name "*.jpg" -o -name "*.png" \) # 排除目录(! 表示 NOT) find . -type f ! -path "*/.git/*" ``` 2. **限制搜索深度** ```bash find / -maxdepth 3 -name "*.conf" # 仅搜索3层目录 ``` 3. **结合 xargs 批量处理** ```bash find /backup -mtime +365 | xargs rm # 删除1年前备份 ``` --- #### **五、典型应用场景** 1. **清理临时文件** ```bash find /tmp -type f -mtime +7 -delete ``` 2. **查找大文件释放空间** ```bash find / -size +500M -exec ls -lh {} \; ``` 3. **备份修改过的文件** ```bash find /var/www -mtime -1 -exec cp {} /backup \; ``` 4. **修复权限** ```bash find ~/public_html -type d -exec chmod 755 {} + ``` --- **注意事项**: - 系统目录搜索需 `sudo` 权限(如 `find /`) - `-delete` 或 `-exec rm` 操作前建议先用 `-print` 测试 - 通配符需用引号包裹(如 `-name "*.txt"`)避免 shell 扩展[^2] > 引用说明:本文综合了 `find` 命令的核心功能[^1][^2][^3][^4][^5],具体实践时请结合手册 (`man find`) 调整参数。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值