查询文件类型与文件位置命令)
file
作用:查看文件类型(linux下的文件类型不以后缀名区分)
语法:file [选项] filename
=================================================================================[root@san01 ~]# file /etc/passwd/etc/passwd: ASCII text #文本文档[root@san01 ~]# file /etc/etc: directory #目录文档[root@san01 ~]# 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[root@san01 ~]# 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路径下搜索。
=================================================================================[root@san01 ~]# which chkconfig/sbin/chkconfig#which只可以检查PATH变量路径下的命令[root@san01 ~]# which cd/usr/bin/which: no cd in (/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)[root@san01 ~]# type cdcd is a shell builtin #因为此命令是一个系统内建命令,所以无法在PATH中查到#扩展、PATH变量[root@san01 ~]# 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 查找不在上述三个参数中的其他特殊文件。
=================================================================================[root@san01 doc]# whereis vimvim: /usr/bin/vim /usr/share/vim /usr/share/man/man1/vim.1.gz[root@san01 doc]# whereis -m vimvim: /usr/share/man/man1/vim.1.gz[root@san01 doc]# whereis -b vimvim: /usr/bin/vim /usr/share/vim=================================================================================
locate
作用:从特定资料库里查询文件
语法:locate keywords
安装:yum install -y mlocate,安装完成后需要用updatedb命令更新一下数据库
资料库文件:/var/lib/mlocate/mlocat.db
=================================================================================#安装locate[root@san01 doc]# yum install mlocate#使用前要提前updatedb一下[root@san01 doc]# locate test11.gzlocate: can not stat () `/var/lib/mlocate/mlocate.db': No such file or directory[root@san01 doc]# updatedb[root@san01 doc]# locate test11.gz/root/test11.gz#db文件位置[root@san01 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...
=================================================================================#查询家目录一天之内修改过的文件[root@san01 ~]# find . -mtime 0|xargs ls -dldr-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目录下的普通文件[root@san01 ~]# 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#如何不查询子目录下的普通文件呢?[root@san01 ~]# find ./dir4 -maxdepth 1 -type f #由于dir4下面没有普通文件,所以为空[root@san01 ~]# 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位),已经被/代替
=================================================================================#分别创建不同权限的文件[root@web01 ~]# ll perm|awk 'NR>1{printf("perm:%-11sname:%s\n",$1,$9)}'perm:---------- name:001perm:-----w---- name:002perm:---------x name:003perm:-r-------- name:004perm:---------T name:005perm:-r-s------ name:006perm:-------rw- name:007perm:---x------ name:017perm:-----w-rw- name:037perm:----rw-rw- name:077perm:---x-w-r-- name:177perm:--w-rw-rw- name:377perm:-rw-rw-rw- name:777#查找权限066 即为---rw-rw-[root@web01 perm]# find . -perm 066 -ls |sed 's/[[:space:]]\+/ /g'|cut -d ' ' -f 3,11 ----rw-rw- ./077 #只有数字"066"严格匹配[root@web01 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[root@web01 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
=================================================================================[root@san01 ~]# stat test11.gz File: `test11.gz' Size: 122 Blocks: 8 IO Block: 4096 regular fileDevice: 802h/2050d Inode: 12133 Links: 1Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)Access: 2015-03-10 14:50:52.616930866 +0800Modify: 2015-03-05 05:30:10.555977000 +0800Change: 2015-03-10 14:50:44.910931488 +0800=================================================================================
PS:更改ctime不一定更改mtime
PS:更改mtime一定会改动ctime