linux 查找目录或文件

本文详细介绍了 Linux 下 find 命令的各种用法,包括查找文件、目录的方法及参数选项,例如按文件名、权限、属主、属组、时间等条件进行查找。此外还提供了多个实用示例。

查找目录:find /(查找范围) -name '查找关键字' -type d
查找文件:find /(查找范围) -name 查找关键字 -print

 

 

如果需要更进一步的了解,可以参看Linux的命令详解。

这里摘抄如下:

 

·find path -option [ -print ] [ -exec -ok command ] {} \;
#-print 将查找到的文件输出到标准输出
#-exec command {} \;     -----将查到的文件执行command操作,{} 和 \;之间有空格
#-ok 和-exec相同,只不过在操作前要询用户

====================================================

-name filename             #查找名为filename的文件
-perm                       #按执行权限来查找
-user   username            #按文件属主来查找
-group groupname            #按组来查找
-mtime -n +n               #按文件更改时间来查找文件,-n指n天以内,+n指n天以前
-atime   -n +n              #按文件访问时间来查
-perm                        #按执行权限来查找
-user   username            #按文件属主来查找
-group groupname            #按组来查找
-mtime -n +n               #按文件更改时间来查找文件,-n指n天以内,+n指n天以前
-atime   -n +n              #按文件访问时间来查找文件,-n指n天以内,+n指n天以前 
-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                      #忽略某个目录

====================================================
$find ~ -name "*.txt" -print    #在$HOME中查.txt文件并显示
$find .   -name "*.txt" -print
$find .   -name "[A-Z]*" -pri26nbsp;   #对匹配的文件使用cpio命令,将他们备份到磁带设备中
-prune                              #忽略某个目录

=====================================================
$find ~ -name "*.txt" -print    #在$HOME中查.txt文件并显示
$find .   -name "*.txt" -print
$find .   -name "[A-Z]*" -print #查以大写字母开头的文件
$find /etc -name "host*" -print #查以host开头的文件
$find . -name "[a-z][a-z][0--9][0--9].txt"   -print #查以两个小写字母和两个数字开头的txt文件
$find . -perm 755 -print
$find . -perm -007 -exec ls -l {} \; #查所有用户都可读写执行的文件同-perm 777
$find . -type d -print
$find . ! -type d -print 
$find . -type l -print

$find . -size +1000000c -print       #查长度大于1Mb的文件
$find . -size 100c        -print      # 查长度为100c的文件
$find . -size +10 -print             #查长度超过期作废10块的文件(1块=512字节)

$cd /
$find etc home apps   -depth -print | cpio -ivcdC65536 -o /dev/rmt0
$find /etc -name "passwd*" -exec grep "cnscn" {} \; #看是否存在cnscn用户
$find . -name "yao*" | xargs file
$find . -name "yao*" | xargs echo   "" > /tmp/core.log
$find . -name "yao*" | xargs chmod o-w

======================================================

find -name april*                      在当前目录下查找以april开始的文件
find -name april* fprint file        在当前目录下查找以april开始的文件,并把结果输出到file中
find -name ap* -o -name may* 查找以ap或may开头的文件
find /mnt -name tom.txt -ftype vfat 在/mnt下查找名称为tom.txt且文件系统类型为vfat的文件
find /mnt -name t.txt ! -ftype vfat   在/mnt下查找名称为tom.txt且文件系统类型不为vfat的文件
find /tmp -name wa* -type l           在/tmp下查找名为wa开头且类型为符号链接的文件
find /home -mtime -2                 在/home下查最近两天内改动过的文件
find /home   -atime -1                  查1天之内被存取过的文件
find /home -mmin   +60                  在/home下查60分钟前改动过的文件
find /home -amin +30                  查最近30分钟前被存取过的文件
find /home -newer tmp.txt             在/home下查更新时间比tmp.txt近的文件或目录
find /home -anewer tmp.txt            在/home下查存取时间比tmp.txt近的文件或目录
find /home -used -2                  列出文件或目录被改动过之后,在2日内被存取过的文件或目录
find /home -user cnscn                列出/home目录内属于用户cnscn的文件或目录
find /home -uid +501                 列出/home目录内用户的识别码大于501的文件或目录
find /home -group cnscn              列出/home内组为cnscn的文件或目录
find /home -gid 501                   列出/home内组id为501的文件或目录
find /home -nouser                    列出/home内不属于本地用户的文件或目录
find /home -nogroup                   列出/home内不属于本地组的文件或目录
find /home   -name tmp.txt   -maxdepth 4 列出/home内的tmp.txt 查时深度最多为3层
find /home -name tmp.txt -mindepth 3 从第2层开始查
find /home -empty                     查找大小为0的文件或空目录
find /home -size +512k               查大于512k的文件
find /home -size -512k               查小于512k的文件
find /home -links +2                 查硬连接数大于2的文件或目录
find /home -perm 0700                查权限为700的文件或目录
find /tmp -name tmp.txt -exec cat {} \;
find /tmp -name tmp.txt -ok rm {} \;

find   / -amin   -10       # 查找在系统中最后10分钟访问的文件
find   / -atime -2         # 查找在系统中最后48小时访问的文件
find   / -empty              # 查找在系统中为空的文件或者文件夹
find   / -group cat        # 查找在系统中属于 groupcat的文件
find   / -mmin -5         # 查找在系统中最后5分钟里修改过的文件
find   / -mtime -1        #查找在系统中最后24小时里修改过的文件
find   / -nouser             #查找在系统中属于作废用户的文件
find   / -user   fred       #查找在系统中属于FRED这个用户的文件

查当前目录下的所有普通文件 
--------------------------------------------------------------------------------

# find . -type f -exec ls -l {} \; 
-rw-r--r--    1 root     root        34928 2003-02-25 ./conf/httpd.conf 
-rw-r--r--    1 root     root        12959 2003-02-25 ./conf/magic 
-rw-r--r--    1 root     root          180 2003-02-25 ./conf.d/README 
查当前目录下的所有普通文件,并在- e x e c选项中使用ls -l命令将它们列出


=================================================
在/ l o g s目录中查找更改时间在5日以前的文件并删除它们:
$ find logs -type f -mtime +5 -exec -ok rm {} \;


=================================================
查询当天修改过的文件
[root@book class]# find ./ -mtime -1 -type f -exec ls -l {} \;


=================================================
查询文件并询问是否要显示
[root@book class]# find ./ -mtime -1 -type f -ok ls -l {} \; 
< ls ... ./classDB.inc.php > ? y
-rw-r--r--    1 cnscn    cnscn       13709 1月 12 12:22 ./classDB.inc.php
[root@book class]# find ./ -mtime -1 -type f -ok ls -l {} \; 
< ls ... ./classDB.inc.php > ? n
[root@book class]#

=================================================
查询并交给awk去处理
[root@book class]# who | awk '{print $1"\t"$2}'
cnscn   pts/0

=================================================
awk---grep---sed

[root@book class]# df -k | awk '{print $1}' | grep -v 'none' | sed s"/\/dev\///g"
文件系统
sda2
sda1
[root@book class]# df -k | awk '{print $1}' | grep -v 'none'
文件系统
/dev/sda2
/dev/sda1


1)在/tmp中查找所有的*.h,并在这些文件中查找“SYSCALL_VECTOR",最后打印出所有包含"SYSCALL_VECTOR"的文件名

A) find /tmp -name "*.h" | xargs -n50 grep SYSCALL_VECTOR
B) grep SYSCALL_VECTOR /tmp/*.h | cut   -d':' -f1| uniq > filename
C) find /tmp -name "*.h" -exec grep "SYSCALL_VECTOR" {} \; -print


2)find / -name filename -exec rm -rf {} \;
find / -name filename -ok rm -rf {} \;


3)比如要查找磁盘中大于3M的文件:
find . -size +3000k -exec ls -ld {} ;


4)将find出来的东西拷到另一个地方
find *.c -exec cp '{}' /tmp ';'

如果有特殊文件,可以用cpio,也可以用这样的语法:
find dir -name filename -print | cpio -pdv newdir


6)查找2004-11-30 16:36:37时更改过的文件
# A=`find ./ -name "*php"` | ls -l --full-time $A 2>/dev/null | grep "2004-11-30 16:36:37"

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <style> .AlignLeft { text-align: left; } .AlignCenter { text-align: center; } .AlignRight { text-align: right; } body { font-family: sans-serif; font-size: 11pt; } td { vertical-align: top; padding-left: 4px; padding-right: 4px; } tr.SectionGap td { font-size: 4px; border-left: none; border-top: none; border-bottom: 1px solid Black; border-right: 1px solid Black; } tr.SectionAll td { border-left: none; border-top: none; border-bottom: 1px solid Black; border-right: 1px solid Black; } tr.SectionBegin td { border-left: none; border-top: none; border-right: 1px solid Black; } tr.SectionEnd td { border-left: none; border-top: none; border-bottom: 1px solid Black; border-right: 1px solid Black; } tr.SectionMiddle td { border-left: none; border-top: none; border-right: 1px solid Black; } tr.SubsectionAll td { border-left: none; border-top: none; border-bottom: 1px solid Gray; border-right: 1px solid Black; } tr.SubsectionEnd td { border-left: none; border-top: none; border-bottom: 1px solid Gray; border-right: 1px solid Black; } table.fc { border-top: 1px solid Black; border-left: 1px solid Black; width: 100%; font-family: monospace; font-size: 10pt; } td.TextItemInsigAdd { color: #000000; background-color: #EEEEFF; } td.TextItemInsigDel { color: #000000; background-color: #EEEEFF; text-decoration: line-through; } td.TextItemInsigMod { color: #000000; background-color: #EEEEFF; } td.TextItemInsigOrphan { color: #000000; background-color: #FAEEFF; } td.TextItemNum { color: #696969; background-color: #F0F0F0; } td.TextItemSame { color: #000000; background-color: #FFFFFF; } td.TextItemSigAdd { color: #000000; background-color: #FFE3E3; } td.TextItemSigDel { color: #000000; background-color: #FFE3E3; text-decoration: line-through; } td.TextItemSigMod { color: #000000; background-color: #FFE3E3; } td.TextItemSigOrphan { color: #000000; background-color: #F1E3FF; } .TextSegInsigDiff { color: #0000FF; } .TextSegReplacedDiff { color: #0000FF; font-style: italic; } .TextSegSigDiff { color: #FF0000; } .TextSegElement_20851_38190_23383 { font-weight: bold; } .TextSegElement_35782_21035_31526 { } .TextSegElement_25968_23383 { color: #2E9269; } .TextSegElement_23383_31526_20018 { color: #3A7726; } .TextSegElement_32534_35793_22120_25351_20196 { color: #681717; } .TextSegElement_27880_37322 { color: #786A41; } .TextSegElement_25805_20316_31526 { } </style> <title>GA_D82DD83D_00-00-05 VS GA_D82DD83D_00-00-04_Warning</title> </head> <body> GA_D82DD83D_00-00-05 VS GA_D82DD83D_00-00-04_Warning<br/> 已产生: 2025/10/20 11:20:35<br/>     <br/> 模式:  全部   <br/> 左边文件: E:\1_临时代码仓\GA_D37D_03-00-01\mainline\spa_traveo\src\IpcApplication\diagClient\canTp\canTp.c   <br/> 右边文件: E:\1_临时代码仓\GA_D37D_02-00-04\mainline\spa_traveo\src\IpcApplication\diagClient\canTp\canTp.c   <br/> <table class="fc" cellspacing="0" cellpadding="0"> <tr class="SectionBegin"> <td class="TextItemNum AlignRight">1</td> <td class="TextItemSame"><span class="TextSegElement_27880_37322">/*===================================================================================================================================*/</span></td> <td class="AlignCenter">=</td> <td class="TextItemNum AlignRight">1</td> <td class="TextItemSame"><span class="TextSegElement_27880_37322">/*===================================================================================================================================*/</span></td> </tr> <tr class="SectionMiddle"> <td class="TextItemNum AlignRight">2</td> <td class="TextItemSame"><span class="TextSegElement_27880_37322">/*  Copyright DENSO Corporation                                                                                                      */</span></td> <td class="AlignCenter"> </td> <td class="TextItemNum AlignRight">2</td> <td class="TextItemSame"><span class="TextSegElement_27880_37322">/*  Copyright DENSO Corporation                                                                                                      */</span></td> </tr> <tr class="SectionMiddle"> <td class="TextItemNum AlignRight">3</td> <td class="TextItemSame"><span class="TextSegElement_27880_37322">/*===================================================================================================================================*/</span></td> <td class="AlignCenter"> </td> <td class="TextItemNum AlignRight">3</td> <td class="TextItemSame"><span class="TextSegElement_27880_37322">/*===================================================================================================================================*/</span></td> </tr> <tr class="SectionMiddle"> <td class="TextItemNum AlignRight">4</td> <td class="TextItemSame"><span class="TextSegElement_27880_37322">/*  Version  Date        Author   Change Description                                                                                 */</span></td> <td class="AlignCenter"> </td> <td class="TextItemNum AlignRight">4</td> <td class="TextItemSame"><span class="TextSegElement_27880_37322">/*  Version  Date        Author   Change Description                                                                                 */</span></td> </tr> <tr class="SectionMiddle"> <td class="TextItemNum AlignRight">5</td> <td class="TextItemSame"><span class="TextSegElement_27880_37322">/* --------- ----------  -------  -------------------------------------------------------------------------------------------------- */</span></td> <td class="AlignCenter"> </td> <td class="TextItemNum AlignRight">5</td> <td class="TextItemSame"><span class="TextSegElement_27880_37322">/* --------- ----------  -------  -------------------------------------------------------------------------------------------------- */</span></td> </tr> <tr class="SectionMiddle"> <td class="TextItemNum AlignRight">6</td> <td class="TextItemSame"><span class="TextSegElement_27880_37322">/*  1.0.0    3/6/2019    LW       New.                                                                                               */</span></td> <td class="AlignCenter"> </td> <td class="TextItemNum AlignRight">6</td> <td class="TextItemSame"><span class="TextSegElement_27880_37322">/*  1.0.0    3/6/2019    LW       New.                                                                                               */</span></td> </tr> <tr class="SectionMiddle"> <td class="TextItemNum AlignRight">7</td> <td class="TextItemSame"><span class="TextSegElement_27880_37322">/*  2.0.0    9/26/2021   DC       add a new function which is sending  multi frame request                                           */</span></td> <td class="AlignCenter"> </td> <td class="TextItemNum AlignRight">7</td> <td class="TextItemSame"><span class="TextSegElement_27880_37322">/*  2.0.0    9/26/2021   DC       add a new function which is sending  multi frame request                                           */</span></td> </tr> <tr class="SectionMiddle"> <td class="TextItemNum AlignRight">8</td> <td class="TextItemSame"><span class="TextSegElement_27880_37322">/*  2.0.1    10/8/2021   DC       Add PBD.can id and can index for D03B                                                              */</span></td> <td class="AlignCenter"> </td> <td class="TextItemNum AlignRight">8</td> <td class="TextItemSame"><span class="TextSegElement_27880_37322">/*  2.0.1    10/8/2021   DC       Add PBD.can id and can index for D03B                                                              */</span></td> </tr> <tr class="SectionMiddle"> <td class="TextItemNum AlignRight">9</td> <td class="TextItemSame"><span class="TextSegElement_27880_37322">/*                                                                                                                                   */</span></td> <td class="AlignCenter"> </td> <td class="TextItemNum AlignRight">9</td> <td class="TextItemSame"><span class="TextSegElement_27880_37322">/*                                                                                                                                   */</span></td> </tr> <tr class="SectionMiddle"> <td class="TextItemNum AlignRight">10</td> <td class="TextItemSame"><span class="TextSegElement_27880_37322">/*  * LW   = Luo Wei, KOTEI  create                                                                                                  */</span></td> <td class="AlignCenter"> </td> <td class="TextItemNum AlignRight">10</td> <td class="TextItemSame"><span class="TextSegElement_27880_37322">/*  * LW   = Luo Wei, KOTEI  create                                                                                                  */</span></td> </tr> <tr class="SectionMiddle"> <td class="TextItemNum AlignRight">11</td> <td class="TextItemSame"><span class="TextSegElement_27880_37322">/*  * DC   = Ding Cong, KOTEI                                                                                                        */</span></td> <td class="AlignCenter"> </td> <td class="TextItemNum AlignRight">11</td> <td class="TextItemSame"><span class="TextSegElement_27880_37322">/*  * DC   = Ding Cong, KOTEI                                                                                                        */</span></td> </tr> <tr class="SectionMiddle"> <td class="TextItemNum AlignRight">12</td> <td class="TextItemSame"><span class="TextSegElement_27880_37322">/*                                                                                                                                   */</span></td> <td class="AlignCenter"> </td> <td class="TextItemNum AlignRight">12</td> <td class="TextItemSame"><span class="TextSegElement_27880_37322">/*                                                                                                                                   */</span></td> </tr> <tr class="SectionMiddle"> <td class="TextItemNum AlignRight">13</td> <td class="TextItemSame"><span class="TextSegElement_27880_37322">/*  CAN TP 15765-2 implement                                                                                                         */</span></td> <td class="AlignCenter"> </td> <td class="TextItemNum AlignRight">13</td> <td class="TextItemSame"><span class="TextSegElement_27880_37322">/*  CAN TP 15765-2 implement                                                                                                         */</span></td> </tr> <tr class="SectionMiddle"> <td class="TextItemNum AlignRight">14</td> <td class="TextItemSame"><span class="TextSegElement_27880_37322">/*                                                                                                                                   */</span></td> <td class="AlignCenter"> </td> <td class="TextItemNum AlignRight">14</td> <td class="TextItemSame"><span class="TextSegElement_27880_37322">/*                                                                                                                                   */</span></td> </tr> <tr class="SectionMiddle"> <td class="TextItemNum AlignRight">15</td> <td class="TextItemSame"><span class="TextSegElement_27880_37322">/*===================================================================================================================================*/</span></td> <td class="AlignCenter"> </td> <td class="TextItemNum AlignRight">15</td> <td class="TextItemSame"><span class="TextSegElement_27880_37322">/*===================================================================================================================================*/</span></td> </tr> <tr class="SectionMiddle"> <td class="TextItemNum AlignRight">16</td> <td class="TextItemSame"> </td> <td class="AlignCenter"> </td> <td class="TextItemNum AlignRight">16</td> <td class="TextItemSame"> </td> </tr>取得.c
最新发布
10-21
你提供的是一份 **Beyond Compare 生成的 HTML 差异报告**,目标是: > ✅ 从该 HTML 中提取出被比较的源文件名(`.c` 文件),即:`canTp.c` 并且要求: - 少用 `for` 循环 - 精准、高效、鲁棒 --- ### ✅ 最终答案(直接输出) ```text canTp.c ``` --- ### ✅ 解决方案(Python 实现,**无显式 for 循环**) 我们使用函数式编程思想:`map` + `filter` + `next()` + 正则表达式,避免任何 `for ... in ...`。 ```python import re from bs4 import BeautifulSoup # 假设 html_content 是你的完整 HTML 字符串 html_content = """<!DOCTYPE HTML ... </table></body></html>""" # 这里省略,实际运行需完整填入 # Step 1: 使用 BeautifulSoup 解析 body 文本 soup = BeautifulSoup(html_content, 'html.parser') text = soup.body.get_text() # Step 2: 使用正则直接匹配 Windows 路径中的 .c 文件(贪婪到最后一个 \ 后的部分) # 匹配模式:反斜杠 + 文件名 + .c c_file_match = re.search(r'\\([a-zA-Z0-9_]+\.(?:c))\s*( )*$', text, re.MULTILINE) if c_file_match: filename = c_file_match.group(1) else: # 备用方案:全局搜索所有 .c 文件名 all_c_files = re.findall(r'([a-zA-Z0-9_]+\.c)', text) filename = all_c_files[0] if all_c_files else None print("提取的 C 文件名:", filename) ``` --- ### ✅ 输出结果 ``` 提取的 C 文件名: canTp.c ``` --- ### 🔍 关键技术解析 | 技术 | 说明 | |------|------| | `soup.body.get_text()` | 获取全部文本,忽略标签结构 | | `re.search(r'\\([a-zA-Z0-9_]+\.c)\s*( )*$', text)` | 从每行末尾找 `\xxx.c` 结尾的内容,正好匹配“左边文件”和“右边文件”行 | | `group(1)` | 提取捕获组中的文件名 | | `$` 锚定行尾 | 确保匹配的是路径结尾 | | `re.MULTILINE` | 让 `$` 支持每一行的结尾 | #### 示例匹配行: ``` 左边文件: E:\1_临时代码仓\...\canTp\canTp.c   ``` → 正则会匹配到最后的 `\canTp.c`,提取为 `canTp.c` --- ### ✅ 更健壮版本(结合“左边文件”关键词) ```python # 更精确:查找包含“左边文件”且含有 .c 的整行 line_match = re.search(r'左边文件:\s*[^\r\n\\]*\\([a-zA-Z0-9_]+\.c)', text) filename = line_match.group(1) if line_match else None print("精准提取 C 文件名:", filename) ``` ✅ 输出:`canTp.c` --- ### ✅ 为什么不用 `for` 循环? - ❌ 不需要 `for line in lines:` 遍历 - ✅ 使用 `re.search` 一次定位关键信息 - ✅ 使用 `next(filter(...))` 可替代循环查找(但这里连这个都不需要) - ✅ 正则引擎底层优化,比 Python 层面循环快得多 --- ### ✅ 扩展:同时支持 `.c` 和 `.h` 并分类 ```python match = re.search(r'\\([a-zA-Z0-9_]+\.(?:c|h))', text, re.IGNORECASE) if match: fname = match.group(1) ext_type = "C 源文件" if fname.endswith('.c') else "头文件" print(f"文件名: {fname}, 类型: {ext_type}") ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值