0

0

15个实用的Linux find命令示例

高洛峰

高洛峰

发布时间:2016-12-14 17:32:09

|

1505人浏览过

|

来源于php中文网

原创

除了在一个目录结构下查找文件这种基本的操作,你还可以用find命令实现一些实用的操作,使你的命令行之旅更加简易。

本文将介绍15种无论是于新手还是老鸟都非常有用的Linux find命令。

首先,在你的home目录下面创建下面的空文件,来测试下面的find命令示例。

01    # vim create_sample_files.sh    

02    touch MybashProgram.sh    

03    touch mycprogram.c    

04    touch MyCProgram.c    

05    touch Program.c    

06    

07    mkdir backup    

08    cd backup    

09    

10    touch MybashProgram.sh    

11    touch mycprogram.c    

12    touch MyCProgram.c    

13    touch Program.c    

14    

15    # chmod +x create_sample_files.sh    

16    

17    # ./create_sample_files.sh    

18    

19    # ls -R    

20    .:    

21    backup                  MybashProgram.sh  MyCProgram.c    

22    create_sample_files.sh  mycprogram.c      Program.c    

23    

24    ./backup:    

25    MybashProgram.sh  mycprogram.c  MyCProgram.c  Program.c    

1. 用文件名查找文件

这是find命令的一个基本用法。下面的例子展示了用MyCProgram.c作为查找名在当前目录及其子目录中查找文件的方法。

1    # find -name "MyCProgram.c"    

2    ./backup/MyCProgram.c    

3    ./MyCProgram.c    

2.用文件名查找文件,忽略大小写

这是find命令的一个基本用法。下面的例子展示了用MyCProgram.c作为查找名在当前目录及其子目录中查找文件的方法,忽略了大小写。

1    # find -iname "MyCProgram.c"    

2    ./mycprogram.c    

3    ./backup/mycprogram.c    

4    ./backup/MyCProgram.c    

5    ./MyCProgram.c    

3. 使用mindepth和maxdepth限定搜索指定目录的深度

在root目录及其子目录下查找passwd文件。

1    # find / -name passwd    

2    ./usr/share/doc/nss_ldap-253/pam.d/passwd    

3    ./usr/bin/passwd    

4    ./etc/pam.d/passwd    

5    ./etc/passwd    

在root目录及其1层深的子目录中查找passwd. (例如root — level 1, and one sub-directory — level 2)

1    # find -maxdepth 2 -name passwd    

2    ./etc/passwd    

在root目录下及其最大两层深度的子目录中查找passwd文件. (例如 root — level 1, and two sub-directories — level 2 and 3 )

1    # find / -maxdepth 3 -name passwd    

2    ./usr/bin/passwd    

3    ./etc/pam.d/passwd    

4    ./etc/passwd    

在第二层子目录和第四层子目录之间查找passwd文件。

1    # find -mindepth 3 -maxdepth 5 -name passwd    

2    ./usr/bin/passwd    

3    ./etc/pam.d/passwd    

4. 在find命令查找到的文件上执行命令

下面的例子展示了find命令来计算所有不区分大小写的文件名为“MyCProgram.c”的文件的MD5验证和。{}将会被当前文件名取代。

1    find -iname "MyCProgram.c" -exec md5sum {} \;    

2    d41d8cd98f00b204e9800998ecf8427e  ./mycprogram.c    

3    d41d8cd98f00b204e9800998ecf8427e  ./backup/mycprogram.c    

4    d41d8cd98f00b204e9800998ecf8427e  ./backup/MyCProgram.c    

5    d41d8cd98f00b204e9800998ecf8427e  ./MyCProgram.c    

5. 相反匹配

显示所有的名字不是MyCProgram.c的文件或者目录。由于maxdepth是1,所以只会显示当前目录下的文件和目录。

1    find -maxdepth 1 -not -iname "MyCProgram.c"    

2    .    

3    ./MybashProgram.sh    

4    ./create_sample_files.sh    

5    ./backup    

6    ./Program.c    

6. 使用inode编号查找文件

任何一个文件都有一个独一无二的inode编号,借此我们可以区分文件。创建两个名字相似的文件,例如一个有空格结尾,一个没有。

1    touch "test-file-name"    

2    

Linux系统下的shell编程入门篇 中文WORD版
Linux系统下的shell编程入门篇 中文WORD版

本文档主要讲述的是Linux系统下的shell编程入门;Shell编程有很多类似C语言和其他程序语言的特征,但是又没有编程语言那样复杂。Shell程序就是放在一个文件中的一系列Linux命令和实用程序,在执行的时候,通过Linux一个接着一个地解释和执行每个命令。感兴趣的朋友可以过来看看

下载

3    # touch "test-file-name "    

4    [Note: There is a space at the end]    

5    

6    # ls -1 test*    

7    test-file-name    

8    test-file-name    

从ls的输出不能区分哪个文件有空格结尾。使用选项-i,可以看到文件的inode编号,借此可以区分这两个文件。

1    ls -i1 test*    

2    16187429 test-file-name    

3    16187430 test-file-name    

你可以如下面所示在find命令中指定inode编号。在此,find命令用inode编号重命名了一个文件。

1    find -inum 16187430 -exec mv {} new-test-file-name \;    

2    

3    # ls -i1 *test*    

4    16187430 new-test-file-name    

5    16187429 test-file-name    


你可以在你想对那些像上面一样的糟糕命名的文件做某些操作时使用这一技术。例如,名为file?.txt的文件名字中有一个特殊字符。若你想执行“rm file?.txt”,下面所示的所有三个文件都会被删除。所以,采用下面的步骤来删除"file?.txt"文件。

1    ls    

2    file1.txt  file2.txt  file?.txt    

找到每一个文件的inode编号。

1    ls -i1    

2    804178 file1.txt    

3    804179 file2.txt    

4    804180 file?.txt    

如下所示: 使用inode编号来删除那些具有特殊符号的文件名。

1    find -inum 804180 -exec rm {} \;    

2    

3    # ls    

4    file1.txt  file2.txt    

5    [Note: The file with name "file?.txt" is now removed]    

7. 根据文件权限查找文件

下面的操作时合理的:

找到具有指定权限的文件

忽略其他权限位,检查是否和指定权限匹配

根据给定的八进制/符号表达的权限搜索

此例中,假设目录包含以下文件。注意这些文件的权限不同。

1    ls -l    

2    total 0    

3    -rwxrwxrwx 1 root root 0 2009-02-19 20:31 all_for_all    

4    -rw-r--r-- 1 root root 0 2009-02-19 20:30 everybody_read    

5    ---------- 1 root root 0 2009-02-19 20:31 no_for_all    

6    -rw------- 1 root root 0 2009-02-19 20:29 ordinary_file    

7    -rw-r----- 1 root root 0 2009-02-19 20:27 others_can_also_read    

8    ----r----- 1 root root 0 2009-02-19 20:27 others_can_only_read    

找到具有组读权限的文件。使用下面的命令来找到当前目录下对同组用户具有读权限的文件,忽略该文件的其他权限。

1    find . -perm -g=r -type f -exec ls -l {} \;    

2    -rw-r--r-- 1 root root 0 2009-02-19 20:30 ./everybody_read    

3    -rwxrwxrwx 1 root root 0 2009-02-19 20:31 ./all_for_all    

4    ----r----- 1 root root 0 2009-02-19 20:27 ./others_can_only_read    

5    -rw-r----- 1 root root 0 2009-02-19 20:27 ./others_can_also_read    

找到对组用户具有只读权限的文件。

1    find . -perm g=r -type f -exec ls -l {} \;    

2    ----r----- 1 root root 0 2009-02-19 20:27 ./others_can_only_read    

找到对组用户具有只读权限的文件(使用八进制权限形式)。

1    find . -perm 040 -type f -exec ls -l {} \;    

2    ----r----- 1 root root 0 2009-02-19 20:27 ./others_can_only_read    

8. 找到home目录及子目录下所有的空文件(0字节文件)

下面命令的输出文件绝大多数都是锁定文件盒其他程序创建的place hoders

1    find ~ -empty    

只列出你home目录里的空文件。

1    find . -maxdepth 1 -empty    


 只列出当年目录下的非隐藏空文件。

1    find . -maxdepth 1 -empty -not -name ".*"    

9. 查找5个最大的文件

下面的命令列出当前目录及子目录下的5个最大的文件。这会需要一点时间,取决于命令需要处理的文件数量。

1    find . -type f -exec ls -s {} \; | sort -n -r | head -5    

10. 查找5个最小的文件

方法同查找5个最大的文件类似,区别只是sort的顺序是降序。

1    find . -type f -exec ls -s {} \; | sort -n  | head -5    

上面的命令中,很可能你看到的只是空文件(0字节文件)。如此,你可以使用下面的命令列出最小的文件,而不是0字节文件。

1    find . -not -empty -type f -exec ls -s {} \; | sort -n  | head -5    

11. 使用-type查找指定文件类型的文件

只查找socket文件

1    find . -type s    

查找所有的目录

1    find . -type d    

查找所有的一般文件

1    find . -type f    

查找所有的隐藏文件

1    find . -type f -name ".*"    

查找所有的隐藏目录

1    find -type d -name ".*"    

12. 通过和其他文件比较修改时间查找文件

显示在指定文件之后做出修改的文件。下面的find命令将显示所有的在ordinary_file之后创建修改的文件。

01    ls -lrt    

02    total 0    

03    -rw-r----- 1 root root 0 2009-02-19 20:27 others_can_also_read    

04    ----r----- 1 root root 0 2009-02-19 20:27 others_can_only_read    

05    -rw------- 1 root root 0 2009-02-19 20:29 ordinary_file    

06    -rw-r--r-- 1 root root 0 2009-02-19 20:30 everybody_read    

07    -rwxrwxrwx 1 root root 0 2009-02-19 20:31 all_for_all    

08    ---------- 1 root root 0 2009-02-19 20:31 no_for_all    

09    

10    # find -newer ordinary_file    

11    .    

12    ./everybody_read    

13    ./all_for_all    

14    ./no_for_all    

13. 通过文件大小查找文件

使用-size选项可以通过文件大小查找文件。

查找比指定文件大的文件

1    find ~ -size +100M    

查找比指定文件小的文件

1    find ~ -size -100M    

查找符合给定大小的文件

1    find ~ -size 100M    

注意: – 指比给定尺寸小,+ 指比给定尺寸大。没有符号代表和给定尺寸完全一样大。

14. 给常用find操作取别名

若你发现有些东西很有用,你可以给他取别名。并且在任何你希望的地方执行。

常用的删除a.out文件。

1    alias rmao="find . -iname a.out -exec rm {} \;"    

2    # rmao    

删除c程序产生的core文件。

1    alias rmc="find . -iname core -exec rm {} \;"    

2    # rmc    

15. 用find命令删除大型打包文件

下面的命令删除大于100M的*.zip文件。

1    find / -type f -name *.zip -size +100M -exec rm -i {} \;"    

用别名rm100m删除所有大雨100M的*.tar文件。使用同样的思想可以创建rm1g,rm2g,rm5g的一类别名来删除所有大于1G,2G,5G的文件。

1    alias rm100m="find / -type f -name *.tar -size +100M -exec rm -i {} \;"    

2    # alias rm1g="find / -type f -name *.tar -size +1G -exec rm -i {} \;"    

3    # alias rm2g="find / -type f -name *.tar -size +2G -exec rm -i {} \;"    

4    # alias rm5g="find / -type f -name *.tar -size +5G -exec rm -i {} \;"    

5    

6    # rm100m    

7    # rm1g    

8    # rm2g    

9    # rm5g    

Find命令示例(第二部分)

更多15个实用的Linux find命令示例相关文章请关注PHP中文网!

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
go语言 注释编码
go语言 注释编码

本专题整合了go语言注释、注释规范等等内容,阅读专题下面的文章了解更多详细内容。

2

2026.01.31

go语言 math包
go语言 math包

本专题整合了go语言math包相关内容,阅读专题下面的文章了解更多详细内容。

1

2026.01.31

go语言输入函数
go语言输入函数

本专题整合了go语言输入相关教程内容,阅读专题下面的文章了解更多详细内容。

1

2026.01.31

golang 循环遍历
golang 循环遍历

本专题整合了golang循环遍历相关教程,阅读专题下面的文章了解更多详细内容。

0

2026.01.31

Golang人工智能合集
Golang人工智能合集

本专题整合了Golang人工智能相关内容,阅读专题下面的文章了解更多详细内容。

1

2026.01.31

2026赚钱平台入口大全
2026赚钱平台入口大全

2026年最新赚钱平台入口汇总,涵盖任务众包、内容创作、电商运营、技能变现等多类正规渠道,助你轻松开启副业增收之路。阅读专题下面的文章了解更多详细内容。

76

2026.01.31

高干文在线阅读网站大全
高干文在线阅读网站大全

汇集热门1v1高干文免费阅读资源,涵盖都市言情、京味大院、军旅高干等经典题材,情节紧凑、人物鲜明。阅读专题下面的文章了解更多详细内容。

73

2026.01.31

无需付费的漫画app大全
无需付费的漫画app大全

想找真正免费又无套路的漫画App?本合集精选多款永久免费、资源丰富、无广告干扰的优质漫画应用,涵盖国漫、日漫、韩漫及经典老番,满足各类阅读需求。阅读专题下面的文章了解更多详细内容。

67

2026.01.31

漫画免费在线观看地址大全
漫画免费在线观看地址大全

想找免费又资源丰富的漫画网站?本合集精选2025-2026年热门平台,涵盖国漫、日漫、韩漫等多类型作品,支持高清流畅阅读与离线缓存。阅读专题下面的文章了解更多详细内容。

19

2026.01.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
进程与SOCKET
进程与SOCKET

共6课时 | 0.4万人学习

PHP入门到实战消息队列RabbitMQ
PHP入门到实战消息队列RabbitMQ

共22课时 | 1.3万人学习

成为PHP架构师-自制PHP框架
成为PHP架构师-自制PHP框架

共28课时 | 2.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号