一、find命令
格式:find [路径] [参数]。
常用参数:
-atime +n/-n:表示访问或执行时间大于或小于n天的文件。
-ctime +n/-n:表示写入、更改iNode属性(如更改所有者、权限或者链接)的时间大于或小于n天的文件。
-mtime +n/-n:表示写入时间大于或小于n天的文件,该参数用得很多。
示例命令:
# find /tmp4_6/ -mtime -1
上例中,-mtime -1表示,mtime在1天之内的文件,单位是天。而-mtime +10表示mtime在10天以上的文件。还有用法:-mmin -10,表示mtime在10分钟内的文件。有时候也可以不加+或-,比如-mtime 10,这表示正好为10天,此用法比较少。
atime(access time):是在读取文件或者执行文件时更改的。
ctime(change time):是在写入文件、更改所有者、权限或链接设置时随iNode内容的更改而更改的。
mtime(modified time):是在写入文件时随文件内容的更改而更改的。
iNode(索引节点):用来存放档案及目录的基本信息,包含时间信息、文档名、所有者以及所属组等。是Unix中的一种数据结构,本质是结构体,在文件系统创建时生成,且个数有限。Linux下,可用df -i来查看各分区的iNode总数及使用情况。
因此,更改文件的内容即会更改mtime和ctime,但是文件的ctime可能会在mtime未发生任何变化时更改。例如,更改了文件的权限,但是文件内容无变化。
stat命令:查看文件的具体信息。
如何获得文件atime、ctime和mtime?使用stat命令可列出这三个信息。示例:
# stat 123
文件:"123"
大小:28 块:0 IO 块:4096 目录
设备:803h/2051d Inode:8389038 硬链接:3
权限:(2755/drwxr-sr-x) Uid:( 0/ root) Gid:( 1000/ user1)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2018-01-31 20:28:22.516934992 +0800 (atime)
最近更改:2018-01-31 20:28:12.092935176 +0800 (mtime)
最近改动:2018-01-31 20:28:12.092935176 +0800 (ctime)
创建时间:-
atime不一定在访问文件之后被修改,因为在使用ext3文件系统时,如果mount使用noatime参数,那么就不会更新atime的信息。总之,这三个time属性值都放在了iNode中。若mtime、atime被修改,那么iNode就一定会改,既然iNode改了,那ctime也跟着会改动。
-name filename:表示直接查找该文件名的文件,该选项比价常用,示例命令:
# find . -name test2 //.表示当前目录,当前目录在/tmp4_6下面
# find . -name "test*" //支持用*通配
-type filetype:表示通过文件类型查找文件。filetype包含了f、b、c、d、l、s等类型,示例命令:
# find . -type d
find -type [fbcdls]各类型都代表什么意思?
d(directory):目录
f:普通文件、二进制文件、文本文档
l:软链接文件
s:socket文件
c:字符串设备
b:块设备
找文件的硬链接,先查看文件的iNode号,再命令:
# find / -inum inode号
在find的同时把文件列出来,示例命令格式:
# find /root/ -type f -mmin 120 -exec ls -l {} \;
{}表示find出来的文件列表,把文件列表里的文件都ls -l出来。
# find /root/ -type f -mmin 150 -exec mv {} {} .bak \;
将150分钟以内的文件都改名加一个.bak。
# find /root/ -type f -size -10k -exec ls -lh {} \;
将小于10k的文件都列出来,也可改为大于10k,单位也可改为M,必须带单位。
-o:或者。
whereis命令:通过预先生成的一个文件列表库查找与给出的文件名相关的文件,格式:whereis [-bms] [文件名称],各选项含义如下:
-b:只查找二进制文件。
-m:只查找帮助文件(在man目录下的文件)
-s:只查找源代码文件。
locate命令:类似于whereis,也是通过查找预先生成的文件列表库来告诉用户要查找的文件在哪里,后面直接跟文件名。若没有这个命令,需安装mlocate软件包。
# yum install -y mlocate
初次运行这个命令会报错,因为系统还没有生成那个文件列表库。可使用updatedb命令立即生成(或更新)这个库。若你的服务器上正在执行重要的业务,那最好不要运行这个命令,因为一旦运行,服务器的压力会增大。默认情况下,该数据库每周更新一次。若使用locate命令搜索一个文件,而该文件正好是在两次更新时间段内创建的,那肯定得不到结果。我们可以到文件/etc/updated.conf中配置这个数据库生成(或更新)的规则。
locate所搜索到的文件列表,不管是目录名还是文件名,只要包含我们要搜索的关键词,都会列出来,所以locate不适合精准搜索。因此不常用。
二、文件名后缀
Linux系统中,文件的后缀名没有具体意义,加或不加都无所谓。为了区分,习惯在定义文件名时加一个后缀名。
1.sh:shell脚本
2.tar.gz:压缩包
my.cnf:配置文件
test.zip:压缩文件
早期Unix系统文件名最多允许14个字符,新的Unix和Linux系统,文件名最长可达255个字符。
原文地址:http://blog.51cto.com/13576245/2067941