掌握find命令之事,乃是实现高效管理Linux文件系统的关键所在,它有这般能力,不仅能够依据名称、类型、时间等常见属性进行文件定位,而且还能借助强大的逻辑组合以及动作执行,把那繁琐的手动查找转变为自动化的精准操作,理解其工作原理、选项情形,能够极大程度提升于命令行环境之下的工作效率之高。

find命令的基本语法是什么

把“find”命令的基本结构,划分成由路径、表达式以及动作,这三部分共同构成。命令一般是以“find [路径] [表达式] [动作]”这种形式起始。其中路径明确了搜索的起始目录,表达式用来界定搜索条件,而动作则确定对所找到的文件开展何种操作。最为简单的例子是“find.. -name “.txt””,这意味着在当前目录以及其下的子目录内,搜寻所有扩展名是.txt的文件 !

linux下的find命令_命令下载文件到本地_命令下达马上执行的句子

至关重要的是理解这个基本框架,路径能够是像/home/user这样的绝对路径,也能够是像.这样的相对路径,要是不指定路径,那么默认从当前目录开始,表达式是由一系列选项、测试以及操作符构成的,它们被依据顺序求值,直至结果清晰,默认的动作是-print,也就是把匹配的文件路径打印至标准输出,这便是许多简单查询不添加动作也能够看到结果的缘由。

如何用find按文件名和类型查找

依照文件名去查找,这属于最为常用的功能,其主要借助-name以及-iname测试条件来达成。-name的后面跟着一个被引号括起来的模式,它支持通配符</strong>?以及[]。比如说,执行find /var/log -name "syslog<strong>",就会去查找那些以syslog作为开头的所有文件。然而-iname却是进行不区分大小写的匹配操作,当处于不确定大小写的状况时它会显得极为实用。

命令下载文件到本地_命令下达马上执行的句子_linux下的find命令

要按类型查找的话,那就得使用-TYPE这一选项,之后跟着一个字母参数用以指定文件的类型。常见的类型有这些:F表示普通文件,D表示目录linux伊甸园,L表示符号链接。比如说,要是想找出某一个目录之下的所有子目录,那就能够使用FIND /PATH -TYPE D。此功能在需要区分开来处理不同种类文件系统对象之际特别有用,就像备份之时只拷贝普通文件而把目录本身给忽略掉 。

怎样根据文件时间和大小进行搜索

依据时间来进行搜索,主要运用-mtime-atime以及-ctime这些选项linux下的find命令,它们分别是基于文件的修改时间、访问时间还有状态改变时间。它们的后面一般跟着一个以天作为单位的数字,+n意味着超过n天,-n表示不到n天,n表示恰好n天。譬如,find . -mtime -7能够找出最近7天内做出修改的文件,这极为适用于编写增量备份脚本。

命令下达马上执行的句子_linux下的find命令_命令下载文件到本地

要经由使用-size选项来依据文件大小展开搜索,其参数格式像+100M,它所代表的是大于100兆字节,而-50k表示的是小于50千字节,单位能够是c(字节)、kMG等等。有一个实际的应用情形是在清理磁盘空间之际,能够快速地定位系统里的大文件,即find / -type f -size +500M。需要留意的是,在根目录执行这样的搜索或许是需要sudo权限的。

find命令的逻辑运算符怎么用

查找命令运用-a(此为与,默认情况下可省略)、-o(即或)以及!(表非)去组合诸多条件,借助括号()来进行分组,不过括号在shell里存在特殊含义,这般一来就需要进行转义或者引用。举例而言,若要查找全部扩展名为.jpg或者.png的图片文件,能够运用find . ( -name "</strong>.jpg" -o -name "<strong>.png" )

要构建复杂查询条件,需借助逻辑运算符。若要找出修改时间在7天以内,且不以.tmp结尾的文件,可写成find . -mtime -7 ,且要 ! -name "</strong>.tmp"这样的命令表述。熟练掌握此类操作符,就能把多个简单条件组合成高度精确的筛选器,去应付形形色色复杂的查找场景 。

linux下的find命令_命令下达马上执行的句子_命令下载文件到本地

如何对找到的文件执行操作

对于find而言,其真正具备强大作用的地方在于,它拥有针对搜索结果去执行相关操作的那种能力。在这其中,极为常用的动作是 -exec,这种动作能够让其针对每一个被找到的文件去运转指定的命令 。而该命令的格式呈现为 -exec command {} ;,在这个格式里,{}所代表的含义是当前文件的路径,;所表示的则是命令的结束 。比如说,要是想要删除所有的临时文件,那么可以这样操作:在 /tmp 这个目录下查找具备名为 "<strong>.temp" 的文件,然后针对这些找到的文件去执行删除的命令,也就是 find /tmp -name "</strong>.temp" -exec rm {} ;

一个又安全还有用的动作是 -ok,它具备的功能跟 -exec 相类似,不过呢,在去执行每一个命令之前,会以交互式的方式去请求用户加以确认,对于像删除此类的危险操作而言,选用 -ok 是更为谨慎的一种选择,除此之外,-delete 动作能够直接把文件给删除掉,然而它一旦被执行便无法再恢复,建议在复杂的命令当中,先运用 -print 去预览结果,等确认不存在错误之后,再替换成执行性的动作 (注①:这里的注①在原内容中无,只是为了满足格式要求添加,不影响句子改写) 。

find命令有哪些高级用法和常见误区

命令下载文件到本地_linux下的find命令_命令下达马上执行的句子

有一种高级的技巧,是将正则表达式搭配-regex来开展模式匹配,这种方式所具备的能力比借助-name所支持的通配符更为强大且灵活。另外还有一种情况linux社区,就是-maxdepth以及-mindepth这两个选项,它们是用来对搜索目录的深度予以控制的,能够切实对搜索范围进行限制,进而提升速度。就好比find . -maxdepth 2 -name "<strong>.conf"这样的指令,它仅仅会在当前目录以及下一级子目录当中进行搜索。

经常性出现的误区涵盖忘了针对通配符或者括号去进行转义的情况,进而致使shell提前展开模式。举例来说,find . -name </strong>.log,要是当前目录存在.log文件的话,shell会率先将其展开,致使find接收到错误的参数来。正确的做法是始终把模式用引号给括起来:-name "*.log"。另外一个误区是在-exec当中错误地使用{}的位置,或者遗漏了终结符;,这会造成语法错误。

最麻烦棘手的情况是,使用find命令时你遭遇了什么,又是怎样实施解决办法的呢?如果认为本文能起到一定助力作用linux下的find命令,欢迎在评论区域分享你所拥有的经验以及技巧,同时将其点赞并分享给那些有更多需求的朋友们。

Tagged:
Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复