查询文件类型与文件位置命令)
file
作用:查看文件类型(linux下的文件类型不以后缀名区分)
语法:file [选项] filename
================================================================================= [[email protected] ~]# file /etc/passwd /etc/passwd: ASCII text #文本文档 [[email protected] ~]# file /etc /etc: directory #目录文档 [[email protected] ~]# file /bin/ls #二进制文件 /bin/ls: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped [[email protected] ~]# file test11.gz #压缩文件 test11.gz: gzip compressed data, was "test11", from Unix, last modified: Thu Mar 5 05:30:10 2015 =================================================================================
which
作用:搜索命令用
语法:which command
PS:只是在系统定义的PATH路径下搜索。
================================================================================= [[email protected] ~]# which chkconfig /sbin/chkconfig #which只可以检查PATH变量路径下的命令 [[email protected] ~]# which cd /usr/bin/which: no cd in (/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin) [[email protected] ~]# type cd cd is a shell builtin #因为此命令是一个系统内建命令,所以无法在PATH中查到 #扩展、PATH变量 [[email protected] ~]# echo $PATH /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin =================================================================================
whereis
作用:locates source/binary and manuals sections for specified files.
语法:whereis [选项] 关键字
选项:
-b 只找 binary 格式的文件;
-m 只找在说明手册文件manual 路径下的文件;
-s 只找 source 来源的文件;
-u
查找不在上述三个参数中的其他特殊文件。
================================================================================= [[email protected] doc]# whereis vim vim: /usr/bin/vim /usr/share/vim /usr/share/man/man1/vim.1.gz [[email protected] doc]# whereis -m vim vim: /usr/share/man/man1/vim.1.gz [[email protected] doc]# whereis -b vim vim: /usr/bin/vim /usr/share/vim =================================================================================
locate
作用:从特定资料库里查询文件
语法:locate keywords
安装:yum install
-y mlocate,安装完成后需要用updatedb命令更新一下数据库
资料库文件:/var/lib/mlocate/mlocat.db
================================================================================= #安装locate [[email protected] doc]# yum install mlocate #使用前要提前updatedb一下 [[email protected] doc]# locate test11.gz locate: can not stat () `/var/lib/mlocate/mlocate.db‘: No such file or directory [[email protected] doc]# updatedb [[email protected] doc]# locate test11.gz /root/test11.gz #db文件位置 [[email protected] doc]# ls -l /var/lib/mlocate/mlocate.db -rw-r-----. 1 root slocate 769272 Mar 10 15:39 /var/lib/mlocate/mlocate.db =================================================================================
find
说明:最强大的查询工具。
语法:find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]
表达式:
- -mtime 以改变文件内容时间为搜索条件查询文件
我们事先约定,从现在时间开始往前推24小时为第1天,n=1。以此类推第一天再往前推24小时是第2天,n=2...
-mtime
n :n为数字,意为查询第n+1天当天24小时内改动过内容的文件;
-mtime +n :意为查询n+1天之前(不含n+1天本身)被改动过內容的文件;
-mtime -n :列出在 n
天之內(含 n 天本身)被改动过内容的文件;
-newer file :file 为一个已存文件,列出比 file被改动内容更早之前的文件。
上图摘自鸟哥教程
从上图可以看出,当n=4的时候
-mtime 4 是查询第5天改动过内容的文件;
-mtime +4 是查询5天前改动过内容的文件;
-mtime -4 是查询4天内改动过内容的文件。
- -mmin 同-mtime,只是n不代表天数,代表分钟。
- -type 以文件类型为搜索条件查询文件
文件类型:f(普通文件),d(目录文件), l(链接文件),s(套接字),p(管道),c(字符文件)和b(块设备)。
- -i 忽略查询条件的大小写
- -inum 以文件的inode号为查询条件查询文件。
- -maxdepth 后面跟数字,代表最大查询路径的层数,0,1,2...
================================================================================= #查询家目录一天之内修改过的文件 [[email protected] ~]# find . -mtime 0|xargs ls -dl dr-xr-x---. 5 root root 4096 Mar 10 14:50 . -rw-------. 1 root root 12863 Mar 9 23:19 ./.bash_history -rw-r--r--. 1 root root 175 Mar 10 00:04 ./.bashrc -rw-r--r--. 1 root root 96 Mar 10 01:17 ./crontab.sh -rw-------. 1 root root 129 Mar 10 15:52 ./.lesshst -rw-r--r--. 1 root root 8 Mar 10 00:23 ./newfile #查询dir4目录下的普通文件 [[email protected] ~]# find ./dir4 -type f|xargs ls -l -rw-r--r--. 1 root root 0 Mar 5 04:58 ./dir4/03/test03 -rw-r--r--. 1 root root 0 Mar 5 04:35 ./dir4/03/test4 -rw-r--r--. 1 root root 0 Mar 5 04:34 ./dir4/dir3/test3 #如何不查询子目录下的普通文件呢? [[email protected] ~]# find ./dir4 -maxdepth 1 -type f #由于dir4下面没有普通文件,所以为空 [[email protected] ~]# find ./dir4 -maxdepth 2 -type f #当我们向下延伸一层后,可查到2层的文件 ./dir4/dir3/test3 ./dir4/03/test03 ./dir4/03/test4 =================================================================================
-perm权限详解
-perm 数字权限(3位),表示匹配项必须严格匹配此权限
-perm
-数字权限(3位),表示匹配项必须不少于此权限
-perm
/数字权限(3位),表示匹配项ugo中任何一组包含要求权限中的任意一个普通权限即可
-perm
/数字权限(4位),和3位的数字权限规则一致,区别在于特殊权限和普通权限分别独立考虑
-perm
+数字权限(3位),已经被/代替
================================================================================= #分别创建不同权限的文件 [[email protected] ~]# ll perm|awk ‘NR>1{printf("perm:%-11sname:%s\n",$1,$9)}‘ perm:---------- name:001 perm:-----w---- name:002 perm:---------x name:003 perm:-r-------- name:004 perm:---------T name:005 perm:-r-s------ name:006 perm:-------rw- name:007 perm:---x------ name:017 perm:-----w-rw- name:037 perm:----rw-rw- name:077 perm:---x-w-r-- name:177 perm:--w-rw-rw- name:377 perm:-rw-rw-rw- name:777 #查找权限066 即为---rw-rw- [[email protected] perm]# find . -perm 066 -ls |sed ‘s/[[:space:]]\+/ /g‘|cut -d ‘ ‘ -f 3,11 ----rw-rw- ./077 #只有数字"066"严格匹配 [[email protected] perm]# find . -perm /066 -ls|sed ‘s/[[:space:]]\+/ /g‘|cut -d ‘ ‘ -f 3,11 -----w---- ./002 #/066,只要9位权限中有r或者w的全部匹配 ---x-w-r-- ./177 -------rw- ./007 --w-rw-rw- ./377 ----rw-rw- ./077 -rw-rw-rw- ./777 -----w-rw- ./037 [[email protected] perm]# find . -perm -066 -ls|sed ‘s/[[:space:]]\+/ /g‘|cut -d ‘ ‘ -f 3,11 --w-rw-rw- ./377 #-066,只要不小于066权限的都匹配 ----rw-rw- ./077 -rw-rw-rw- ./777 =================================================================================
stat
作用:查看三个时间
语法:stat file/dir
================================================================================= [[email protected] ~]# stat test11.gz File: `test11.gz‘ Size: 122 Blocks: 8 IO Block: 4096 regular file Device: 802h/2050d Inode: 12133 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2015-03-10 14:50:52.616930866 +0800 Modify: 2015-03-05 05:30:10.555977000 +0800 Change: 2015-03-10 14:50:44.910931488 +0800 =================================================================================
PS:更改ctime不一定更改mtime
PS:更改mtime一定会改动ctime