which 命令
which
命令:
介绍:搜索文件路径(PATH中定义且有权限)
格式:which command
用法:
[root@localhost ~]# which ls
alias ls='ls --color=auto'
/usr/bin/ls
[root@localhost ~]# which tree
/usr/bin/tree
[root@localhost ~]#
whereis 命令
whereis
命令:
介绍:查看文件路径和相关包,实际是内部有定时搜索
格式:whereis command
用法:
[root@localhost ~]# whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
[root@localhost ~]# whereis tree
tree: /usr/bin/tree /usr/share/man/man1/tree.1.gz
locate 命令
locate
命令:
介绍: 不精切的查找,包含字符就满足(/tmp下除外)需要yum install -y mlocate
安装对应的软件包,使用updatedb
命令更新内部数据库后才能查找
格式:locate option
用法:
[root@localhost ~]# locate 1.txt
/etc/pki/nssdb/pkcs11.txt
/usr/share/man/man5/pkcs11.txt.5.gz
/usr/share/vim/vim74/doc/gui_x11.txt.gz
/usr/share/vim/vim74/doc/usr_01.txt.gz
/usr/share/vim/vim74/doc/usr_11.txt.gz
/usr/share/vim/vim74/doc/usr_21.txt.gz
/usr/share/vim/vim74/doc/usr_31.txt.gz
/usr/share/vim/vim74/doc/usr_41.txt.gz
只要路径中符合查找的字段的后会输出
find 命令
find
命令(重要):
介绍:查找文件
格式:find path [option] string
用法:
find /dir/ -name 'filename'|'filename*(通配符)' :下指定目录下按名查找
find /dir/ -tpye d|s|l|p|f :按文件类型查找
find /dir/ -mtime [-|+]days : 按天查找(+为变更天数以前,-为多少天以内,以目前时间为参考点)
find /dir/ -mmin [-|+]min : 按分钟找
find /dir/ -inum num : 按inode查找
find /dir/ -name -tpye : 复合条件查找
find /dir/ -perm num : 权限查找
find /dir/ -maxdepth 1 : 只限当前目录(不包括子目录)
find /dir/ -size [-|+]10[k|M|G] : 按大小查找
-o : 逻辑或 `find /dir/ -name 'filename'|'filename*(通配符)'
find . -type f -perm 600 : 查找当前目录下600权限的所有文件
find . -type f -perm 600 -o -perm 644:查找当前目录下600或644权限的所有文件
find . -type f -perm 600 -a -mtime -2 :查找当前目录下600权限的两天前的文件
find /etc/ -type f ! -mtime -365 : 找出 /etc/ 目录下,一年内从未变更过的文件
find . -type d -perm 600 |xargs -i mv {} {}.bak : 查找当前目录下600权限的目录并输出给mv {}匹配所有输出的文件
find . -type d -perm 600 |xargs rm -r : 查找当前目录下600权限的目录并删除
find . -name "*.txt" -exec mv {} {}.bak \; :查看当前目录下带txt的文件并修改(注意结尾的\;)
find 命令中用到按时间查找,linux文件有三个类型时间,用stat命令查看
stat 命令
stat
命令
介绍:查看文件详细信息
格式:stat file
用法:
[root@localhost ~]# stat 1.txt.bak
File: '1.txt.bak'
Size: 4 Blocks: 8 IO Block: 4096 regular file
Device: 803h/2051d Inode: 67162872 Links: 1
Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2018-08-01 22:17:14.280451353 +0800
Modify: 2018-08-01 22:17:36.964735995 +0800
Change: 2018-08-01 22:48:16.970764413 +0800
Birth: -
文件的 Access time,atime 是在读取文件或者执行文件时更改的。
文件的 Modified time,mtime 是在写入文件时随文件内容的更改而更改的。
文件的 Change time,ctime 是在写入文件、更改所有者、权限或链接设置时随 Inode 的内容
更改而更改的。因此,更改文件的内容即会更改 mtime 和 ctime,但是文件的 ctime 可能会
在 mtime 未发生任何变化时更改,如权限更改了但文件内容没有更改。
如何获得一个文件的atime mtime 以及ctime?
ls(1) 命令可用来列出文件的 atime、ctime 和 mtime。
# ls -lc filename 列出文件的 ctime
# ls -lu filename 列出文件的 atime
# ls -l filename 列出文件的 mtime
[root@localhost ~]# ls -lu 1.txt.bak
-rwxr-xr-x 1 root root 4 Aug 1 22:17 1.txt.bak
[root@localhost ~]# ls -lc 1.txt.bak
-rwxr-xr-x 1 root root 4 Aug 1 22:48 1.txt.bak
[root@localhost ~]# ls -l 1.txt.bak
-rwxr-xr-x 1 root root 4 Aug 1 22:17 1.txt.bak
[root@localhost ~]#
atime不一定在访问文件之后被修改,因为:使用ext3文件系统的时候,如果在mount的时候使用
了noatime参数那么就不会更新atime的信息。而这是加了 noatime 取消了, 不代表真实情況。
反正, 这三个 time stamp 都放在 inode 中. 若 mtime, atime 修改, inode 就一定會改,
既然 inode 改了, 那 ctime 也就跟著要改了(理论上是这样的,但是真实情况并非如此,如果
是读取文档或者执行二进制文件的时候,虽然atime会变,但ctime不变,这是系统这样设计的).