原文出处: thegeekstuff 译文出处: oschina-青崖白鹿
除了在一个目录结构下查找文件这种基本的操作,你还可以用find命令实现一些实用的操作,使你的命令行之旅更加简易。
本文将介绍15种无论是于新手还是老鸟都非常有用的Linux find命令。
首先,在你的home目录下面创建下面的空文件,来测试下面的find命令示例。
# vim create_sample_files.sh touch MybashProgram.sh touch mycprogram.c touch MyCProgram.c touch Program.c mkdir backup cd backup touch MybashProgram.sh touch mycprogram.c touch MyCProgram.c touch Program.c # chmod +x create_sample_files.sh # ./create_sample_files.sh # ls -R .: backup MybashProgram.sh MyCProgram.c create_sample_files.sh mycprogram.c Program.c ./backup: MybashProgram.sh mycprogram.c MyCProgram.c Program.c
1. 用文件名查找文件
这是find命令的一个基本用法。下面的例子展示了用MyCProgram.c作为查找名在当前目录及其子目录中查找文件的方法。
# find -name "MyCProgram.c" ./backup/MyCProgram.c ./MyCProgram.c
2.用文件名查找文件,忽略大小写
这是find命令的一个基本用法。下面的例子展示了用MyCProgram.c作为查找名在当前目录及其子目录中查找文件的方法,忽略了大小写。
# find -iname "MyCProgram.c" ./mycprogram.c ./backup/mycprogram.c ./backup/MyCProgram.c ./MyCProgram.c
3. 使用mindepth和maxdepth限定搜索指定目录的深度
在root目录及其子目录下查找passwd文件。
# find / -name passwd ./usr/share/doc/nss_ldap-253/pam.d/passwd ./usr/bin/passwd ./etc/pam.d/passwd ./etc/passwd
在root目录及其1层深的子目录中查找passwd. (例如root — level 1, and one sub-directory — level 2)
# find -maxdepth 2 -name passwd ./etc/passwd
在root目录下及其最大两层深度的子目录中查找passwd文件. (例如 root — level 1, and two sub-directories — level 2 and 3 )
# find / -maxdepth 3 -name passwd ./usr/bin/passwd ./etc/pam.d/passwd ./etc/passwd
在第二层子目录和第四层子目录之间查找passwd文件。
# find -mindepth 3 -maxdepth 5 -name passwd ./usr/bin/passwd ./etc/pam.d/passwd
4. 在find命令查找到的文件上执行命令
下面的例子展示了find命令来计算所有不区分大小写的文件名为“MyCProgram.c”的文件的MD5验证和。{}将会被当前文件名取代。
find -iname "MyCProgram.c" -exec md5sum {} \; d41d8cd98f00b204e9800998ecf8427e ./mycprogram.c d41d8cd98f00b204e9800998ecf8427e ./backup/mycprogram.c d41d8cd98f00b204e9800998ecf8427e ./backup/MyCProgram.c d41d8cd98f00b204e9800998ecf8427e ./MyCProgram.c
5. 相反匹配
显示所有的名字不是MyCProgram.c的文件或者目录。由于maxdepth是1,所以只会显示当前目录下的文件和目录。
find -maxdepth 1 -not -iname "MyCProgram.c" . ./MybashProgram.sh ./create_sample_files.sh ./backup ./Program.c
6. 使用inode编号查找文件
任何一个文件都有一个独一无二的inode编号,借此我们可以区分文件。创建两个名字相似的文件,例如一个有空格结尾,一个没有。
touch "test-file-name" # touch "test-file-name " [Note: There is a space at the end] # ls -1 test* test-file-name test-file-name
从ls的输出不能区分哪个文件有空格结尾。使用选项-i,可以看到文件的inode编号,借此可以区分这两个文件。
ls -i1 test* 16187429 test-file-name 16187430 test-file-name
你可以如下面所示在find命令中指定inode编号。在此,find命令用inode编号重命名了一个文件。
find -inum 16187430 -exec mv {} new-test-file-name \; # ls -i1 *test* 16187430 new-test-file-name 16187429 test-file-name
你可以在你想对那些像上面一样的糟糕命名的文件做某些操作时使用这一技术。例如,名为file?.txt的文件名字中有一个特殊字符。若你想执行“rm file?.txt”,下面所示的所有三个文件都会被删除。所以,采用下面的步骤来删除”file?.txt”文件。
ls file1.txt file2.txt file?.txt
找到每一个文件的inode编号。
ls -i1 804178 file1.txt 804179 file2.txt 804180 file?.txt
如下所示:?使用inode编号来删除那些具有特殊符号的文件名。
find -inum 804180 -exec rm {} \; # ls file1.txt file2.txt [Note: The file with name "file?.txt" is now removed]
7. 根据文件权限查找文件
下面的操作时合理的:
- 找到具有指定权限的文件
- 忽略其他权限位,检查是否和指定权限匹配
- 根据给定的八进制/符号表达的权限搜索
此例中,假设目录包含以下文件。注意这些文件的权限不同。
ls -l total 0 -rwxrwxrwx 1 root root 0 2009-02-19 20:31 all_for_all -rw-r--r-- 1 root root 0 2009-02-19 20:30 everybody_read ---------- 1 root root 0 2009-02-19 20:31 no_for_all -rw------- 1 root root 0 2009-02-19 20:29 ordinary_file -rw-r----- 1 root root 0 2009-02-19 20:27 others_can_also_read ----r----- 1 root root 0 2009-02-19 20:27 others_can_only_read
找到具有组读权限的文件。使用下面的命令来找到当前目录下对同组用户具有读权限的文件,忽略该文件的其他权限。
find . -perm -g=r -type f -exec ls -l {} \; -rw-r--r-- 1 root root 0 2009-02-19 20:30 ./everybody_read -rwxrwxrwx 1 root root 0 2009-02-19 20:31 ./all_for_all ----r----- 1 root root 0 2009-02-19 20:27 ./others_can_only_read -rw-r----- 1 root root 0 2009-02-19 20:27 ./others_can_also_read
找到对组用户具有只读权限的文件。
find . -perm g=r -type f -exec ls -l {} \; ----r----- 1 root root 0 2009-02-19 20:27 ./others_can_only_read
找到对组用户具有只读权限的文件(使用八进制权限形式)。
find . -perm 040 -type f -exec ls -l {} \; ----r----- 1 root root 0 2009-02-19 20:27 ./others_can_only_read
8. 找到home目录及子目录下所有的空文件(0字节文件)
下面命令的输出文件绝大多数都是锁定文件盒其他程序创建的place hoders
find ~ -empty
只列出你home目录里的空文件。
find . -maxdepth 1 -empty
只列出当年目录下的非隐藏空文件。
find . -maxdepth 1 -empty -not -name ".*"
9. 查找5个最大的文件
下面的命令列出当前目录及子目录下的5个最大的文件。这会需要一点时间,取决于命令需要处理的文件数量。
find . -type f -exec ls -s {} \; | sort -n -r | head -5
10. 查找5个最小的文件
方法同查找5个最大的文件类似,区别只是sort的顺序是降序。
find . -type f -exec ls -s {} \; | sort -n | head -5
上面的命令中,很可能你看到的只是空文件(0字节文件)。如此,你可以使用下面的命令列出最小的文件,而不是0字节文件。
find . -not -empty -type f -exec ls -s {} \; | sort -n | head -5
11. 使用-type查找指定文件类型的文件
#只查找socket文件 find . -type s #查找所有的目录 find . -type d #查找所有的一般文件 find . -type f #查找所有的隐藏文件 find . -type f -name ".*" #查找所有的隐藏目录 find -type d -name ".*"
12. 通过和其他文件比较修改时间查找文件
显示在指定文件之后做出修改的文件。下面的find命令将显示所有的在ordinary_file之后创建修改的文件。
13. 通过文件大小查找文件
ls -lrt total 0 -rw-r----- 1 root root 0 2009-02-19 20:27 others_can_also_read ----r----- 1 root root 0 2009-02-19 20:27 others_can_only_read -rw------- 1 root root 0 2009-02-19 20:29 ordinary_file -rw-r--r-- 1 root root 0 2009-02-19 20:30 everybody_read -rwxrwxrwx 1 root root 0 2009-02-19 20:31 all_for_all ---------- 1 root root 0 2009-02-19 20:31 no_for_all # find -newer ordinary_file . ./everybody_read ./all_for_all ./no_for_all
使用-size选项可以通过文件大小查找文件。
#查找比指定文件大的文件 find ~ -size +100M #查找比指定文件小的文件 find ~ -size -100M #查找符合给定大小的文件 find ~ -size 100M
注意: – 指比给定尺寸小,+ 指比给定尺寸大。没有符号代表和给定尺寸完全一样大。
14. 给常用find操作取别名
若你发现有些东西很有用,你可以给他取别名。并且在任何你希望的地方执行。
#常用的删除a.out文件。 alias rmao="find . -iname a.out -exec rm {} \;" # rmao #删除c程序产生的core文件。 alias rmc="find . -iname core -exec rm {} \;" # rmc
15. 用find命令删除大型打包文件
下面的命令删除大于100M的*.zip文件。
find / -type f -name *.zip -size +100M -exec rm -i {} \;"
alias rm100m="find / -type f -name *.tar -size +100M -exec rm -i {} \;" # alias rm1g="find / -type f -name *.tar -size +1G -exec rm -i {} \;" # alias rm2g="find / -type f -name *.tar -size +2G -exec rm -i {} \;" # alias rm5g="find / -type f -name *.tar -size +5G -exec rm -i {} \;" # rm100m # rm1g # rm2g # rm5g
Find命令示例(第二部分)
若你喜欢这篇关于find命令的Mommy文章,别忘了看看第二部分的关于find命令的Daddy文章。《爹地,我找到了!15个极好的Linux find命令示例》
来源:http://blog.jobbole.com/48856/
相关推荐
"petty妈咪:顶部导航"是这样一个小程序的示例,它专注于提供良好的用户体验,尤其是通过顶部导航来帮助用户更方便地浏览和操作。 在小程序开发中,顶部导航(Navbar)扮演着至关重要的角色,它通常包含返回按钮、...
给你孕期提醒,教你育儿指南,根据孕妇身体情况、宝宝生长发育情况,特别为你定制健康服务,自动生成孕、产、育档案,让孕妇有一个快乐孕期,让宝宝的健康可以管理。 3、“24小时医生在身边” 让妈妈更安心,给你的...
妈咪商城案例源码则是针对微信小程序开发的一个实际项目实例,主要针对母婴商品销售和服务。 【小程序开发环境】开发微信小程序,首先需要下载并安装微信开发者工具,这是一个集成了代码编辑、预览、调试功能的平台...
在妈咪宝贝早教中心,我体验到了一个专业和温馨的实习环境。从室内装饰的温暖色彩到和谐的同事关系,这些都为我提供了一个舒适的工作氛围。这样的环境大大提升了我的工作效率和教学的热情。 回顾这几个月的实习生活...
新父母可以在这个功能中找到喂养技巧、换尿布指南、疫苗接种时间表等实用信息,这些内容可以大幅减少育儿初期的困扰和压力。而对于那些希望获得更多专业意见的用户,“专家咨询”功能提供了与专业医生团队直接沟通的...
活动从播放一段录像《妈妈照顾小宝宝》开始,录像中通过五个精心挑选的场景——喂奶、哄睡、换尿片、玩游戏和祝福,向孩子们展示了妈妈日常照顾宝宝的点点滴滴。每个场景都蕴含着妈妈对宝宝深深的爱与关怀。通过直观...
在这份商业计划书中,上海香荔网络科技有限公司提出了“月嫂妈咪”项目,旨在解决妈妈用户在寻找月嫂服务时面临的痛点。具体来说,公司的商业计划包括以下几个方面: 首先,公司提出了用户痛点,指出妈妈们在通过...
母婴妈咪宝贝wap移动端整站html5模板_粉色 育儿 母婴 育婴 妈咪
"pretty-妈咪商城"是一个基于微信小程序的电商应用案例,旨在为用户提供母婴商品的在线购买服务。在这个案例中,我们可以探讨几个关键的知识点: 1. **微信小程序开发环境搭建**:首先,开发者需要安装微信开发者...
微信小程序demo推荐:petty妈咪:顶部导航,UI设计;适用1122(源代码+截图)微信小程序demo推荐:petty妈咪:顶部导航,UI设计;适用1122(源代码+截图)微信小程序demo推荐:petty妈咪:顶部导航,UI设计;适用1122(源...
### 2024年欧洲妈咪包市场主要企业市场占有率及排名 #### 一、行业背景与市场概况 - **全球经济环境与中欧贸易关系**:2023年,欧元区20国经济增长几乎陷入停滞,欧盟和欧元区GDP增长率仅为0.4%,显著低于2022年的...
总之,母婴妈咪宝贝wap移动端HTML5模板结合了Amaze UI的优势,提供了一个功能齐全、美观易用的母婴类移动网站解决方案,对于想要快速搭建此类网站的开发者来说,是一个非常实用的工具。通过深入理解和熟练运用,...
接下来,我将详细介绍五个实用的育儿招数,帮助单亲妈妈更好地应对育儿过程中遇到的难题。 首先,保持诚实与透明是单亲妈妈育儿的第一要则。在处理家庭关系,比如离婚或与前任的互动时,单亲妈妈可能会出于保护孩子...
【标题】"pretty-妈咪商城前端界面含详细前端代码" 涉及的主要知识点是前端开发技术,尤其是针对电商网站的用户界面设计与实现。这个项目为新手提供了实践前端编程技能的机会,同时也展示了如何构建一个功能完善的...
"mmmmh::national_park" 是一个项目,它的核心功能是帮助用户对图片进行压缩,使其在不牺牲太多...如果你需要处理大量的图片资源,尤其是对于网站性能优化或者存储空间有限的情况下,这个项目会是一个实用的解决方案。
母婴妈咪宝贝wap移动端整站html5模板_粉色 育儿 母婴 育婴 妈咪 宝贝 移动 整站 wap 手机 Amaze UI 新闻母婴妈咪宝贝wap移动端整站html5模板_粉色 育儿 母婴 育婴 妈咪 宝贝 移动 整站 wap 手机 Amaze UI 新闻
"pretty-妈咪商城源码"是一个专门针对微信小程序的电商应用实例,适合开发者学习和参考,同时也可供已经具备基础服务器搭建知识的人员部署到自己的服务器上运行。 这个源码包包含了以下关键知识点: 1. 微信小程序...
在这个“petty妈咪”微信小程序demo中,我们能看到它着重于顶部导航设计和UI(用户界面)设计,这在提升用户体验方面扮演着关键角色。 顶部导航是用户界面中的一个重要组成部分,它通常包含应用的Logo、主要功能...
"pretty-妈咪商城"是一个基于微信小程序的电商应用源码,它包含了构建一个专门针对母婴产品的在线商城所需的所有组件和功能。 在源码中,"pretty-妈咪商城"可能包括以下关键组成部分: 1. **框架与结构**:源码...