在Linux系统上查找文件
Find命令
格式:find <指定搜索范围> <指定条件> <指定动作>
其中搜索范围是一个目录名,指定条件包括文件名、文件属性(修改时间所属用户等)、所在位置特点(如目录深度等)等;指定动作包括打印(-print)等;
例如:find $HOME -name "*.sh",查找用户根目录下所有以.sh结尾的文件,除了按文件名查找,find还可以按文件大小、类型、所属用户、用户组、修改时间、是否为空等,还可以指定找到文件后要执行的动作, 例如下面第一个指令是找到文件后运行ls命令,第3个指令是查找文件名中有echo且不属于root的文件(可以用!表示取反):
[godu@goduserver ~]$ find ./backup/nep -name "*echo*" -ls
124059671 8 -rwxr-xr-x 1 godu godu 192 5月 19 10:59 ./backup/nep/echoServerStart.sh
[godu@goduserver ~]$ find ./backup/nep -name "*echo*" ! -user godu
[godu@goduserver ~]$ find ./backup/nep -name "*echo*" ! -user root
./backup/nep/echoServerStart.sh
find /proc/<pid>/fd -type s(找所有socket文件)结果为空,用-type l可知此目录下所有文件都为link文件。
引号问题
(2013-9-4更新)
find -name 中是glob格式,而且只匹配文件名,如果想用正则表达式匹配,则需要匹配完整路径名。
例如有这样一个文件:./CalcServer/src/com/boco/deploy/ConfigLoader.java,用find . -name "Co*.java"可以匹配上,但find . -regex "Co.*java"匹配不上,因为它只匹配了文件名,而不是包括路径的完整路径名,改为find . -regex ".*Co.*java"就ok了。
参考:http://bbs.chinaunix.net/thread-612012-1-1.html
查找条件
(2013-10-17更新)
按时间特性查找
find -newerXY : 查找在某个时间点之后修改(更新,生成)的文件,例如:
find . -newermt '2014-01-16 00:00' -name '*.py'
查找所有修改时间晚于1月16日0点的扩展名为py的文件。
find -mtime -1: 查找最近一天内被更改过的文件;
mtime是按天查询,"-mtime -7" 查询修改时间在7天前到现在这段时间内的文件;
mmin是按分钟查询,其他与mtime一样;
atime, ctime分别是access time和change time(mtime是modification time),其他与mtime一样;
find -newer 列出所有修改时间晚于修改时间的文件;
查找深度限制
- -maxdepth 用来指定查询的目录深度,一般作为find的第一个参数;
查找类型限制
- "-type f" 表示只显示文件,"-type d" 表示只查询目录;另外还有l(链接),s(socket)等类型可选;
指定动作
"-exec": 格式:
find -exec {} \;
上面{}代表被查出来的项目,命令以分号结尾,但为了避免分号在不同系统中的歧义,前面加反斜杠对分号进行转义;find -exec {} +
将所有find找到的条目放在一起,由一次性执行,效率比"find ... \;"版本高很多;
"-print": 主要用来在管道命令中为其他命令传值;
Locate命令
相当于find -name,但速度远快于find,因为Linux维护了一个文件列表数据库(在Ubuntu上,这个数据库文件是/var/lib/mlocate/mlocate.db),locate命令查询这个数据库给出结果。由于数据库每天更新,所以如果查询最近的更改,需要手工更新数据库:
sudo updatedb
注意locate的搜索结果是包含路径的,所以用locate 'abc'是搜不到文件名以abc开头的文件的,必须写为"abc*";
- 文件名部分普通匹配:locate strom;对应Emacs中M-x locate;
只有在这种最简形式下,可以将locate 'strom'简写为locate storm;
glob匹配:locate 'strom.gz',搜索所有storm*.gz文件;
正则匹配:locate -r '.Storm.java',或者:locate -r '.[Gg]roovy.';
在特定路径下搜索指定扩展名文件:locate -r '.warez.[Vv]irtual[Bb]ox.*[rpm|deb]'
用正则指定文件扩展名:locate -r 'Storm.*.java'
- locate+grep效果很好,先用locate进行粗选,然后在grep中细化,如查抄版本号为2.2.0的一个Hadoop安装包:locate 2.2.0|grep hadoop,或者查找所有文件名为Groovy或者groovy的文件:locate -r '[Gg]roovy'|grep '[Gg]roovy'
Ref:
5 Ways To Search For Files Using The Terminal
在Linux系统上查找文件的更多相关文章
- 3种方法来在Linux电脑上查找文件
如果你不太了解Linux命令,那么在Linux系统里查找文件是比较困难的.只要使用多种不同的终端命令,可以很快地找到文件.Linux命令比其它操作系统的搜索功能更加强大,掌握这些命令就能你完全控制这些 ...
- Linux系统上查找已安装软件的路径
在Linux系统上查找已安装软件路径的命令,以查找pcre的安装路径为例: [root@localhost doc]# rpm -ql pcre /lib64/libpcre.so. /lib64/l ...
- Linux系统下查找文件的方法
Linux系统下查找文件的方法 作者:Vashon 时间:20150419 方法一.在当前目录里查找所有名为以 java 开头的文件: find ./ -name "java*" ...
- linux(八)linux系统中查找文件二
前面介绍的是find命令,我们发现一个find命令居然有那么多的命令,我看到都要晕了,不管没有关系,加油.相信自己! 一.grep命令 1.1.作用 Linux系统中grep命令是一种强大的文本搜索工 ...
- linux(七)之linux系统中查找文件
前面介绍一篇文章介绍了关于vi编辑器的使用,感觉是不是那么多的命令怎么记得住呀,小编也是这样让认为的,但是慢慢的发现,其实还是很有意思的.正所谓熟能生巧多练习,找到其中的规律就ok了.今天看到一句话让 ...
- Linux系统上传文件与下载文件命令
我们用的服务器都是Linux系统的,如果用的是远程服务器,就需要将我们的代码推送过去,这里可以用到PSCP命令. (一)上传 pscp 本机文件的路径以及文件名 远程主机的用户名@远程主机IP:想要存 ...
- Linux系统快速查找文件
有时候下载新的文件或安装新的包 但是却搞不清默认放在哪个目录了,这个时候可以使用locate命令进行快速模糊查找 比如我使用 go get github.com/coreos/bbolt/... 在一 ...
- 使用FileZilla向linux系统上传文件
- linux系统下修改文件夹目录权限
linux系统下修改文件夹目录权限 文件夹权限问题 Linux.Fedora.Ubuntu修改文件.文件夹权限的方法差不多.很多人开始接触Linux时都很头痛Linux的文件权限问题.这里告诉大家如何 ...
随机推荐
- NoSql非关系型数据库之MongoDB应用(一):安装MongoDB服务
业精于勤,荒于嬉:行成于思,毁于随. 一.MongoDB服务下载安装(windows环境安装) 1.进入官网:https://www.mongodb.com/,点击右上角的 Try Free , 2 ...
- c++11 线程间同步---利用std::condition_variable实现
1.前言 很多时候,我们在写程序的时候,多多少少会遇到下面种需求 一个产品的大致部分流程,由工厂生产,然后放入仓库,最后由销售员提单卖出去这样. 在实际中,仓库的容量的有限的,也就是说,工厂不能一直生 ...
- Camunda工作流引擎简单入门
官网:https://camunda.com/ 官方文档:https://docs.camunda.org/get-started/spring-boot/project-setup/ 阅读新体验:h ...
- 如何快速实现一个虚拟 DOM 系统
虚拟 DOM 是目前主流前端框架的技术核心之一,本文阐述如何实现一个简单的虚拟 DOM 系统. 为什么需要虚拟 DOM? 虚拟 DOM 就是一棵由虚拟节点组成的树,这棵树展现了真实 DOM 的结构.这 ...
- mongodb数据的导出导入
1.[导出]mongoexport -h (主机名) -d (库) -c (集合名) -o (路径) -u (账号) -p (密码)示例:mongoexport -h localhost -d jav ...
- XCTF(MISC) give_you_flag
题目描述:菜狗找到了文件中的彩蛋很开心,给菜猫发了个表情包 1.下载附件,点击查看 发现在数完钱后,有出现一个二维码的东西. 2.使用stegsolv工具,进行逐帧查看. 说个题外话,stegsolv ...
- QT从入门到入土(三)——信号和槽机制
摘要 信号槽是 Qt 框架引以为豪的机制之一.所谓信号槽,实际就是观察者模式.当某个事件发生之后,比如,按钮检测到自己被点击了一下,它就会发出一个信号 (signal).这种发出是没有目的的,类似广播 ...
- vue(17)vue-route路由管理的安装与配置
介绍 Vue Router 是 Vue.js官方的路由管理器.它和 Vue.js 的核心深度集成,让构建单页面应用变得易如反掌.包含的功能有: 嵌套的路由/视图表 模块化的.基于组件的路由配置 路由参 ...
- UFT对于PDF 文档的操作方法 VBS代码
1.首先需要安装Adobe Acrobat,而不是Adobe Reader 2.理解AcroExch.App .AcroExch.AVDoc.AcroExch.PODoc App 主要管理应用级别的对 ...
- asp.net c# 保存图片到sql2008
//图像数据表:tx//字段id (nvarchar(50) ,image(image)//tgav为图片ID,实质为上传前的主名 (省略了.jpg)private void kkkkk(byte[] ...