`
从此醉
  • 浏览: 1111625 次
  • 性别: Icon_minigender_1
  • 来自: US
社区版块
存档分类
最新评论

妈咪,我找到了! -- 15个实用的Linux find命令示例

 
阅读更多

 

除了在一个目录结构下查找文件这种基本的操作,你还可以用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  
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

 

1
1
分享到:
评论
2 楼 从此醉 2014-03-07  
ykssky 写道
不放原帖跟偷没区别  
http://www.thegeekstuff.com/2009/03/15-practical-linux-find-command-examples/

好吧,不用这么直接吧
1 楼 ykssky 2014-03-06  
不放原帖跟偷没区别  
http://www.thegeekstuff.com/2009/03/15-practical-linux-find-command-examples/

相关推荐

    微信小程序开发-妈咪商城案例源码.zip

    妈咪商城案例源码则是针对微信小程序开发的一个实际项目实例,主要针对母婴商品销售和服务。 【小程序开发环境】开发微信小程序,首先需要下载并安装微信开发者工具,这是一个集成了代码编辑、预览、调试功能的平台...

    安卓应用-健康医疗-快乐妈咪手机客户端 v5.3.2 安卓最新版.zip

    新父母可以在这个功能中找到喂养技巧、换尿布指南、疫苗接种时间表等实用信息,这些内容可以大幅减少育儿初期的困扰和压力。而对于那些希望获得更多专业意见的用户,“专家咨询”功能提供了与专业医生团队直接沟通的...

    毕业设计 微信小程序设计-pretty-妈咪商城.rar

    在“毕业设计 微信小程序设计-pretty-妈咪商城”这个项目中,我们可以深入探讨微信小程序的开发流程、技术栈以及如何构建一个面向母婴用品的在线商城。 1. **微信小程序开发基础** 微信小程序是腾讯公司推出的一种...

    微信小程序-pretty-妈咪商城源码

    "pretty-妈咪商城源码"是一个专门针对微信小程序的电商应用实例,适合开发者学习和参考,同时也可供已经具备基础服务器搭建知识的人员部署到自己的服务器上运行。 这个源码包包含了以下关键知识点: 1. 微信小程序...

    行业资料-交通装置-一种妈咪亲子自行车.zip

    行业资料-交通装置-一种妈咪亲子自行车.zip

    微信小程序demo推荐:petty妈咪:顶部导航

    "petty妈咪:顶部导航"是这样一个小程序的示例,它专注于提供良好的用户体验,尤其是通过顶部导航来帮助用户更方便地浏览和操作。 在小程序开发中,顶部导航(Navbar)扮演着至关重要的角色,它通常包含返回按钮、...

    微信小程序案例 pretty-妈咪商城

    "pretty-妈咪商城"是一个基于微信小程序的电商应用案例,旨在为用户提供母婴商品的在线购买服务。在这个案例中,我们可以探讨几个关键的知识点: 1. **微信小程序开发环境搭建**:首先,开发者需要安装微信开发者...

    微信小程序源码-pretty-妈咪商城.zip

    "pretty-妈咪商城"是一个基于微信小程序的电商应用源码,它包含了构建一个专门针对母婴产品的在线商城所需的所有组件和功能。 在源码中,"pretty-妈咪商城"可能包括以下关键组成部分: 1. **框架与结构**:源码...

    行业教育软件-学习软件-妈咪有方早教视频大全 5.0.zip

    行业教育软件-学习软件-妈咪有方早教视频大全 5.0.zip

    精品商业计划书2020-”月嫂妈咪”为妈妈找到放心的月嫂_20160113商业计划书.pdf

    在这份商业计划书中,上海香荔网络科技有限公司提出了“月嫂妈咪”项目,旨在解决妈妈用户在寻找月嫂服务时面临的痛点。具体来说,公司的商业计划包括以下几个方面: 首先,公司提出了用户痛点,指出妈妈们在通过...

    pretty-妈咪商城前端界面含详细前端代码

    总的来说,"pretty-妈咪商城前端界面"项目涵盖了前端开发的多个关键领域,对于新手来说,通过学习和实践这个项目,可以全面了解并掌握前端开发的基本技术和流程。同时,对于有经验的开发者,这个项目也是一个很好的...

    妈咪掌中宝 v2.8.3

    给你孕期提醒,教你育儿指南,根据孕妇身体情况、宝宝生长发育情况,特别为你定制健康服务,自动生成孕、产、育档案,让孕妇有一个快乐孕期,让宝宝的健康可以管理。 3、“24小时医生在身边” 让妈妈更安心,给你的...

    基于JAVA开发的pretty-妈咪商城app

    在本项目中,“基于JAVA开发的pretty-妈咪商城app”是一个专为妈妈们设计的电子商务应用程序,利用Java编程语言进行构建。Java是一种广泛使用的、跨平台的编程语言,以其“一次编写,到处运行”的特性著称。这个项目...

    2024年欧洲妈咪包市场主要企业市场占有率及排名.docx

    ### 2024年欧洲妈咪包市场主要企业市场占有率及排名 #### 一、行业背景与市场概况 - **全球经济环境与中欧贸易关系**:2023年,欧元区20国经济增长几乎陷入停滞,欧盟和欧元区GDP增长率仅为0.4%,显著低于2022年的...

    pretty-妈咪商城_微信小程序模板js代码前台前端H5页面源码.rar

    "pretty-妈咪商城"是一个专门针对母婴用品销售的微信小程序模板,其前端源码同时也支持H5页面展示,为开发者提供了一个方便快捷的电商解决方案。 首先,我们来了解微信小程序的基本结构。微信小程序由JSON配置文件...

    小程序源码(无后台)_pretty-妈咪商城.rar

    "小程序源码(无后台)_pretty-妈咪商城.rar" 是一个包含小程序源代码的压缩包,主要用于学习和参考。在这个项目中,我们重点关注的是小程序的前端开发,因为描述中提到“无后台”,意味着这个源码没有包括后端...

    实习总结发言稿妈咪宝贝.docx

    在妈咪宝贝早教中心,我体验到了一个专业和温馨的实习环境。从室内装饰的温暖色彩到和谐的同事关系,这些都为我提供了一个舒适的工作氛围。这样的环境大大提升了我的工作效率和教学的热情。 回顾这几个月的实习生活...

    大班社会教案:妈咪宝贝亲又亲.doc

    为了进一步巩固和实践孩子们对亲情的理解,活动设计了“我来当小爸爸、小妈妈”的角色扮演环节。在这个环节中,孩子们有机会亲自扮演爸爸妈妈的角色,模拟照顾一个仿真娃娃。在这个过程中,他们不仅要照顾娃娃的基本...

    pretty-妈咪商城.zip

    我们的小程序源码功能多样,涵盖社交、电商等领域。高度定制化,轻松打造专属风格。用户体验佳,界面美观操作便捷。安全可靠,保障数据与运行稳定。适合创业者、企业和开发者。提供技术支持与文档说明。...

Global site tag (gtag.js) - Google Analytics