12月22日 find命令

简介:

一、find命令
find命令可以根据给定的路径和表达式查找指定的文件或目录。find参数选项很多,并且支持正则表达式,功能强大。和管道结合使用可以实现复杂的功能,是系统管理者和普通用户必须掌握的命令。find命令如不加任何参数,表示查找当前路径下的所有文件和目录。

(一)相关概念
1、正则表达式:
正则表达式,又称规则表达式,英文名为Regular Expression,在代码中常简写为regex、regexp或RE,是计算机科学的一个概念。正则表通常被用来检索、替换那些符合某个模式(规则)的文本。正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式是一种文本模式,模式描述在搜索文本时要匹配的一个或多个字符串。
正则表达式30分钟入门教程(转载至https://deerchao.net/tutorials/regex/regex.htm ),后面的课程中还会有专门的linux下正则表达式的内容。
2、文件的三个时间:
(1)access time(atime 最近访问):最后访问时间,这里的访问时间是指文件被读取,而更新的时间。例如:对这个文件运用 more、cat、ls、stat命令都不会修改文件的访问时间。
(2)modification time(mtime 最近修改):内容修改时间,这里的修改时间指的是文件的内容发生变化,而更新的时间。例如:vi后保存文件。
(3)status time(ctime 最近改动):状态修改时间, 这里的修改时间指的是文件的属性或者权限发生变化,而更新的时间。例如:通过chmod、chown命令修改一次文件属性,这个时间就会更新。
注意:Linux下,文件没有建立时间,所以linux下的文件建立时间是不能判断的,能判断的只有以上三个可以更新的时间。转一个知乎上的解释:
12月22日 find命令

操作命令 atime最近访问 mtime最近修改 ctime最近改动
mv 没变 没变 变了
cp 变了 没变 没变
touch 变了 变了 变了
cat/more 变了 没变 没变
ls 没变 没变 没变
chmod 没变 没变 变了
ln 没变 没变 变了
echo 没变 没变 没变
vi 没变 变了 变了

(二)命令语法
find 路径(path-name) 【-选项】【-print -exec -ok 命令 { } \;】
path-name:命令查找的目录路径,可以用“.”表示当前目录,用“..”表示当前目录的上级目录,用“/”表示系统根目录。
-print :将搜索的结果标准输出
-exec:对搜索出的文件执行后续的命令,而不询问用户是否执行该命令。{ }表示shell命令的选项即为所查找到的文件。命令的末尾必须以“;”结束。注意:格式要正确,“-exec命令{ } \;”,在“}”和“\”之间一定要有空格。
(三)命令选项

格式 说明
-name“字符串” 查找文件名匹配所给字符串的所有文件,字符串内可用通配符*、?、[]
-lname“字符串” 查找文件名匹配所给字符串的所有符号链接文件,字符串内可用通配符*、?、[]
-gid n 查找属于ID号为n的用户组的所有文件
-uid n 查找属于ID号为n的用户的所有文件
-empty 查找大小为0的目录和文件
-path‘字符串’ 查找路径名匹配所给字符串的所有文件,字符串可用通配符
-group“字符串” 查找属于用户组名为所给字符串的所有文件
-depth 查找文件时先查找本级目录,在查找子目录
-prune 目录 查找时忽略所给目录,如果有-depth选项,那么prune选项将被忽略
-size n 查找大小为n的文件
-user “字符串” 查找用户名为所给字符串的文件
-mtime +n或-n 按时间搜索内容有修改过的文件,+那表示n天之前,-n表示今天到n天之前
-type 文件类型 按指定文件类型搜索。文件类型包括b(块设备文件)、c(字符串设备)、f(普通文件)、l(链接文件)、d(目录)、p(管道)、s(socket)文件
选项 后续待补充

(四)用法示例
1、根据文件类型搜索文件
搜索/tmp/目录下所有txt文档
12月22日 find命令
2、搜索/tmp/文件夹下修改时间1天以内的文件并显示到屏幕
12月22日 find命令
3、显示上例汇总搜索到的文件的内容
12月22日 find命令
4、搜索/tmp/文件夹下修改时间60分钟后内的文件打包为xuexi1.tar.gz移动到test1目录下,并显示过程。
12月22日 find命令
5、删除/tmp/目录下的所有文件
12月22日 find命令

二、 文件后缀名
linux没有严格的文件后缀名定义,文件后缀名只是约定用于交流该文件为什么文件,比如说我们有一个后缀名是txt的文件,那么他就有可能是文档文件,可以vi编辑,常用的文件后缀名有
txt、zip、tar、exe、jar

linux的文件类型参加12月15日笔记,共七种

d 目录文件。
l 符号链接(指向另一个文件,类似于windows的快捷方式)。
s socket文件。
b 块设备文件,二进制文件。
c 字符串设备文件。
p 管道文件。
“-”普通文件,或更准确地说,不属于以上几种类型的文件

三、其他常用命令
1、显示时间;data
12月22日 find命令
2、显示系统语言:echo $LANG
12月22日 find命令
设定语言: LANG=en或LANG=zh_CN.UTF8
3、whereis命令
whereis命令用来定位指令的二进制程序、源代码文件和man手册页等相关文件的路径。 whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。 和find相比,whereis查找的速度非常快,这是因为linux系统会将 系统内的所有文件都记录在一个数据库文件中,当使用whereis和下面即将介绍的locate时,会从数据库中查找数据,而不是像find命令那样,通过遍历硬盘来查找,效率自然会很高。 但是该数据库文件并不是实时更新,默认情况下时一星期更新一次,因此,我们在用whereis和locate 查找文件时,有时会找到已经被删除的数据,或者刚刚建立文件,却无法查找到,原因就是因为数据库文件没有被更新。
12月22日 find命令
4、locate命令
locate命令和slocate命令都用来查找文件或目录。 locate命令其实是find -name的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/locatedb,这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。
首先要安装locate安装包

5、

四、linux和windows互传文件
FTP、samba和xshell的工具软件即可,这里我们先使用xshell或SecurCRT的小工具:lrzsz
1、用yum命令安装lrzsz包
12月22日 find命令
2、从linux向windows传文件。命令:sz
12月22日 find命令
3、从windows上下载文件。命令:rz
12月22日 find命令


 本文转自 whytl 51CTO博客,原文链接:http://blog.51cto.com/11934539/2053778


相关文章
查找文件夹内所有文件
查找文件夹内所有文件
79 0
|
存储 Linux Shell
厉害了!除了find命令,还有这么多文件查找命令,高手必备!
云栖号资讯:【点击查看更多行业资讯】在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 在系统里查找文件,是所有工程师都必备的技能(不管你用的是 Windows 、Linux、还是 MacOS 系统)。
厉害了!除了find命令,还有这么多文件查找命令,高手必备!
|
Shell
find命令小结
背景:由于机器上log日志比较多,所以想写个脚本定时清理日志   find  /apps/logs/log_receiver -mtime +7 -name "*[log|err]" -exec rm -f {} \;   使用find命令来做这个事情 find [-H] [-L] [-P] [path.
874 0
|
机器学习/深度学习
|
分布式计算 Hadoop
|
Linux PHP JavaScript