0.查看文件详情
[root@master ~]# stat /usr/share/vim/vim74/syntax/syntax.vim
File: ‘/usr/share/vim/vim74/syntax/syntax.vim’
Size: 1228 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 17238963 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2018-12-18 15:19:42.803864733 +0800
Modify: 2018-04-11 07:54:54.000000000 +0800
Change: 2018-07-06 16:13:50.956019553 +0800
Birth: -
说明:Access访问时间。Modify修改时间。Change状态改动时间。可以stat *查看这个目录所有文件的状态。
ctime=change time
atime=access time
mtime=modifiy time
因为这是一个新的文件(filetime.txt),没做过内容、属性的更改,也没读过这个文件,所以三者(访问时间、修改时间、状态改动时间)的时间是一致的,这时文件的修改时间与这三个时间是一样的,是没有疑问的。
1、Access访问时间,读一次这个文件的内容,这个时间就会更新。比如对这个文件运用 more、cat等命令(这里注意,有时候输入vi也会修改访问时间,因为也需要访问内容)。ls、stat命令都不会修改文件的访问时间。
2、Modify修改时间,修改时间是文件内容最后一次被修改时间。比如:vi后保存文件。ls -l列出的时间就是这个时间。
3、Change状态改动时间。是该文件的i节点最后一次被修改的时间,通过chmod、chown命令修改一次文件属性,这个时间就会更新。
1.find命令详解
基本格式:
find path -option [ -print ] [ -exec -ok command ] {} \;
1)按照名字查找:
--查找名字为jdk-8u171-linux-x64.tar.gz的文件或目录
[root@master ~]# find / -name jdk-8u171-linux-x64.tar.gz
find: ‘/run/user/1001/gvfs’: Permission denied
/home/hadoop/opt/software/jdk-8u171-linux-x64.tar.gz
/bigdata/software/jdk-8u171-linux-x64.tar.gz
--查找名字为带有linux的文件或目录
[root@master ~]# find / -name *linux*\.tar\.gz
find: ‘/run/user/1001/gvfs’: Permission denied
/home/hadoop/opt/software/jdk-8u171-linux-x64.tar.gz
/home/hadoop/opt/software/eclipse-jee-luna-SR2-linux-gtk-x86_64.tar.gz
/bigdata/software/jdk-8u171-linux-x64.tar.gz
--查找名字符合正则表达式的文件或目录
[root@master ~]# find / -regex .*linux.*\.tar\.gz
find: ‘/run/user/1001/gvfs’: Permission denied
/home/hadoop/opt/software/jdk-8u171-linux-x64.tar.gz
/home/hadoop/opt/software/eclipse-jee-luna-SR2-linux-gtk-x86_64.tar.gz
/bigdata/software/jdk-8u171-linux-x64.tar.gz
2)按照类型查找
--查找文件
[root@master ~]# find / -type f
--查找目录
[root@master ~]# find / -type d
3)按照时间查找
--Access访问时间
---查找Access访问时间距离现在时刻2天内的文件,-n指n天以内,+n指n天以前
[root@master ~]# find / -atime -2
--查找Access访问时间距离现在时刻2天以上的文件,-n指n天以内,+n指n天以前
[root@master ~]# find / -atime +2
---查找Access访问时间距离现在时刻2分钟内的文件,-n指n分钟以内,+n指n分钟以前
[root@master ~]# find / -amin -2
---查找Access访问时间距离现在时刻2分钟上的文件,-n指n分钟以内,+n指n分钟以前
[root@master ~]# find / -amin +2
--Modify修改时间
--查找Modify修改时间距离现在时刻2天以内的文件,-n指n天以内,+n指n天以前
[root@master ~]# find / -mtime -2
--查找Modify修改时间距离现在时刻2天以上的文件,-n指n天以内,+n指n天以前
[root@master ~]# find / -mtime +2
---查找Modify修改时间距离现在时刻2分钟内的文件,-n指n分钟以内,+n指n分钟以前
[root@master ~]# find / -mmin -2
---查找Modify修改时间距离现在时刻2分钟上的文件,-n指n分钟以内,+n指n分钟以前
[root@master ~]# find / -mmin +2
--Change状态改动时间
--查找Change状态改动时间距离现在时刻2天以内的文件,-n指n天以内,+n指n天以前
[root@master ~]# find / -ctime -2
--查找Change状态改动时间距离现在时刻2天以上的文件,-n指n天以内,+n指n天以前
[root@master ~]# find / -ctime +2
---查找Change状态改动时间距离现在时刻2分钟内的文件,-n指n分钟以内,+n指n分钟以前
[root@master ~]# find / -cmin -2
---查找Change状态改动时间距离现在时刻2分钟上的文件,-n指n分钟以内,+n指n分钟以前
[root@master ~]# find / -cmin +2
4) 根据文件大小查找
--大小单位关键字(大小写敏感):c:字节,w:双字,k:KB,M:MB,G:GB
--查找文件大小大于10M的文件或目录
[root@master ~]# find / -size +10M
--查找文件大小小于10M的文件或目录
[root@master ~]# find / -size -10M
--查找空文件
[root@master ~]# find / -empty
5)按照所属用户或所属组查找
--查找所属用户为hadoo的文件或目录
[root@master ~]# find / -user hadoop
--查找所属组为hadoop的文件或目录
[root@master ~]# find / -group hadoop
6)按照权限来查找
--查找用户和组有读写权限,其他用户有读权限(其他权限不限)的文件和目录
[root@master ~]# find / -perm -664
7)对符合find规则的进行shell命令执行
-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' { } \;,注意{ }和\;之间的空格。
-ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
--查找目录并列出目录下的文件(为找到的每一个目录单独执行ls命令,没有选项-print时文件列表前一行不会显示目录名称)
[root@master ~]# find ./ -type d -print -exec ls {} \;
--查找目录并列出目录下的文件(为找到的每一个目录单独执行ls命令,执行命令前需要确认)
[root@master ~]# find ./ -type d -ok ls {} \;
8)使用混合查找方式查找文件:
--参数有: !,-and(-a),-or(-o)
--在/tmp目录下查找大于10000字节并在最后2分钟内修改的文件
[root@master ~]# find /tmp -size +10000c -and -mtime +2;
2.各个查找文件命令的区别:
(1)find
根据文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为空,访问时间,修改时间等。
(2)grep
根据文件的内容进行查找,会对文件的每一行按照给定的模式(patter)进行匹配查找。
(3)which
查看可执行文件的位置,只有设置了环境变量的程序才可以用
(4)whereis
寻找特定文件,只能用于查找二进制文件、源代码文件和man手册页