linux基础:10、基础命令(4)

查询文件类型与文件位置命令)


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 cd
cd 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 vim
vim: /usr/bin/vim /usr/share/vim /usr/share/man/man1/vim.1.gz
[root@san01 doc]# whereis -m vim
vim: /usr/share/man/man1/vim.1.gz
[root@san01 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
[root@san01 doc]# yum install mlocate

#使用前要提前updatedb一下
[root@san01 doc]# locate test11.gz
locate: 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 -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目录下的普通文件
[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: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-
[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 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


本文出自 “三零妖人” 博客,请务必保留此出处http://301ren.blog.51cto.com/8887653/1619114

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。