zoukankan      html  css  js  c++  java
  • Linux第四章 文件和目录管理

    一、目录与路径

    1.相对路径与绝对路径

    • 绝对路径:路径的写法【一定由根目录 / 写起】,例如: /usr/share/doc 这个目录。
    • 相对路径:路径的写法【不是由 / 写起】,例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成: 【cd ../man】这就是相对路径的写法。相对路径意指相对于当前的工作目录

    2.cd (切换目录)

    这个命令应该是Linux中用的最频繁的一个命令之一了,因为我们经常需要进行目录的切换。常用的一些比较特殊的目录:

          .表示当前目录  

          ..表示当前目录的上一级目录  

    cd ~ 表示回到自己的主目录,对于 root 用户,其主目录为 /root

    cd -表示回到刚刚的那个目录

    ~account  代表 account 这个用户的自家家目录

    如:

    [root@xiaoluo ~]# cd /home
    #    此时我们进入到了home目录下
    [root@xiaoluo home]# cd .
    #    .表示当前目录,所以当前还是在home目录下
    [root@xiaoluo home]# cd ..
    #    ..表示上一层目录,所以此时就进入到了 / 目录下
    [root@xiaoluo /]# cd ~
    #   ~表示【目前用户身份】所在的自家目录,当前用户就是root,所以就进入到了root这个目录下
    [root@xiaoluo ~]# cd ~xiaoluo
    #   ~account表示 account 这个用户的自家家目录 ,我如果想进入 xiaoluo 这个用户的主目录,输入 cd ~xiaoluo即可
    [root@xiaoluo xiaoluo]# cd -
    /root
    #   -表示前一个工作目录,我们的前一个工作目录就是在root下,所以此时又会进入到root这个目录下
    [root@xiaoluo ~]# cd ../usr
    #   如果我们需要进入到usr目录下,这里可以写成相对路径形式也可以写成绝对路径形式
    [root@xiaoluo usr]#

    3.pwd (显示当前所在的目录)

    [root@xiaoluo ~]# pwd [-P]
    参数:
    -P  :显示出确实的路径,而非使用链接 (link) 路径。(P是大写)
    例: [root@xiaoluo ~]# pwd /root <== 显示出当前所在的目录
    [root@xiaoluo ~]# cd /var/mail [root@xiaoluo mail]# pwd /var/mail [root@xiaoluo mail]# pwd -P /var/spool/mail <== 怎么回事?有没有加 -P 差很多
    [root@xiaoluo mail]# ls -l /var/mail lrwxrwxrwx. 1 root root 10 3月 30 10:37 mail -> spool/mail

    4.mkdir (建立新目录)

    [root@xiaoluo ~]# mkdir [-mp] 目录名称
    参数:
    -m :配置文件目录的权限。我们可以自己设定自己想要的权限,而不需要使用umask定义的默认权限
    -p :帮助你直接将所需要的目录递归建立起来!
    例:
    [root@xiaoluo ~]# cd /home
    [root@xiaoluo home]# mkdir test    <== 建立一名为 test 的新目录
    [root@xiaoluo home]# mkdir test1/test2/test3/test4
    mkdir: 无法创建目录"test1/test2/test3/test4": 没有那个文件或目录
    [root@linux tmp]# mkdir -p test1/test2/test3/test4 # 加了这个 -p 的参数,可以自行帮我们建立多层目录! [root@xiaoluo home]# mkdir -p test1/test2/test3/test4 [root@xiaoluo home]# mkdir -m 711 test2 [root@xiaoluo home]# ls -l drwxr-xr-x. 2 root root 4096 4月 21 13:08 test drwxr-xr-x. 3 root root 4096 4月 21 13:10 test1 drwx--x--x. 2 root root 4096 4月 21 13:11 test2

    5.rmdir (删除"空"目录)

    [root@xiaoluo ~]# rmdir [-p] 目录名称
    参数:
    -p :连同上层『空的』目录也一起删除
    例:
    [root@xiaoluo home]# ls -l
    drwxr-xr-x.  2 root    root         4096 4月  21 13:08 test
    drwxr-xr-x.  3 root    root         4096 4月  21 13:10 test1
    drwx--x--x.  2 root    root         4096 4月  21 13:11 test2
    [root@xiaoluo home]# rmdir test
    [root@xiaoluo home]# rmdir test1
    rmdir: 删除 "test1" 失败: 目录非空
    [root@xiaoluo home]# rmdir -p test1/test2/test3/test4/
    [root@xiaoluo home]# ls -l
    drwx--x--x.  2 root    root         4096 4月  21 13:11 test2
    
    # 利用 -p 这个参数,立刻就可以将 test1/test2/test3/test4 一次删除~ # 不过要注意的是,这个 rmdir 仅能【删除空的目录】。

    二、

    1.ls (查看文件和目录)

    参数:
    -a  :全部的文件,连同隐藏文件( 开头为 . 的目录) 一起列出来~
    -A  :全部的文件,连同隐藏文件,但不包括 . 与 .. 这两个目录,一起列出来~
    -d  :仅列出目录本身,而不是列出目录内的文件数据
    -f  :直接列出结果,而不进行排序 (ls 预设会以文件名排序!)
    -F  :根据文件、目录等信息,给予附加数据结构,例如:
          *:代表可执行文件; /:代表目录; =:代表 socket 档案; |:代表 FIFO 文件;
    -h  :列出文件的打小(例如GB、KB等等)
    -i  :列出 inode 位置,而非列出文件属性;
    -l  :长数据串行出,包含文件的属性等等数据;
    -n  :列出 UID 与 GID 而非使用者与群组的名称 (UID与GID会在账号管理提到!)
    -r  :将排序结果反向输出,例如:原本文件名由小到大,反向则为由大到小;
    -R  :连同子目录内容一起列出来;
    -S  :以文件容量大小排序!
    -t  :依时间排序
    --color=never  :不要依据文件特性给予颜色显示;
    --color=always :显示颜色
    --color=auto   :让系统自行依据设定来判断是否给予颜色
    --full-time    :以完整时间模式 (包含年、月、日、时、分) 输出
    --time={atime,ctime} :输出 access 时间或 改变权限属性时间 (ctime) 
                           而非内容变更时间 (modification time)

    shutdown -c   取消已经执行的shutdown命令

             -r  重启

             -h  定时关机

    Reboot  重启

    halt ,poweroff关机

    history 显示历史目录

    2. cp (复制命令)

    [root@xiaoluo ~]# cp [-adfilprsu] 源文件(source) 目的文件(destination)
    [root@xiaoluo ~]# cp [options] source1 source2 source3 .... directory
    参数:
    -a  :相当于 -pdr 的意思;
    -d  :若来源文件为链接文件的属性(link file),则复制链接文件属性而非档案本身;
    -f  :为强制 (force) 的意思,若有重复或其他疑问时,不会询问使用者,而强制复制;
    -i  :若目的文件(destination)已经存在时,在覆盖时会先询问是否真的动作!
    -l  :进行硬式连结 (hard link) 的连结文件建立,而非复制文件本身;
    -p  :连同文件的属性一起复制过去,而非使用默认属性;
    -r  :递归持续复制,用于目录的复制行为;
    -s  :复制成为符号链接文件 (symbolic link),亦即『快捷方式』文件;
    -u  :若 destination 比 source 旧才更新 destination !
    最后需要注意的,如果来源档有两个以上,则最后一个目的文件一定要是『目录』

    3.rm (删除文件或目录)

    [root@xiaoluo ~]# rm [-fir] 文件或目录
    参数:
    -f  :就是 force 的意思,强制移除;
    -i  :互动模式,在删除前会询问使用者是否动作
    -r  :递归删除,最常用在目录的删除

    例:
    [root@xiaoluo tmp]# rm bashrc rm:是否删除普通文件 "bashrc"?y

    [root@xiaoluo tmp]# rm wtmp wtmp2 rm:是否删除普通文件 "wtmp"?y rm:是否删除普通文件 "wtmp2"?y

    [root@xiaoluo tmp]# rm -rf etc/  -->> 这个就会强制将etc这个目录以及里面的所有子目录、文件删除掉

    4.mv (移动文件与目录、文件重命名)

    [root@xiaoluo ~]# mv [-fiu] source destination
    [root@xiaoluo ~]# mv [options] source1 source2 source3 .... directory
    参数:
    -f  :force 强制的意思,强制直接移动而不询问;
    -i  :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
    -u  :若目标文件已经存在,且 source 比较新,才会更新 (update)

    实例一:复制一档案,建立一目录,将档案移动到目录中
    [root@xiaoluo tmp]# cp ~/.bashrc bashrc
    [root@xiaoluo tmp]# mkdir mvtest
    [root@xiaoluo tmp]# mv bashrc mvtest/
    [root@xiaoluo tmp]# cd mvtest/
    [root@xiaoluo mvtest]# ls
    bashrc

    实例二:将刚刚的目录名称更名为 mvtest2
    [root@xiaoluo tmp]# mv mvtest mvtest2

    三、查看文件内容

    1.cat 由第一行开始显示文件内容

    [root@xiaoluo~]# cat [-AEnTv]
    参数:
    -A  :相当于 -vET 的整合参数,可列出一些特殊字符~
    -E  :将结尾的断行字符 $ 显示出来;
    -n  :打印出行号;
    -T  :将 [tab] 按键以 ^I 显示出来;
    -v  :列出一些看不出来的特殊字符

    2.tac (反向显示)

    [root@xiaoluo ~]# tac /etc/sysconfig/network
    HOSTNAME=xiaoluo
    NETWORKING=yes

    tac是将cat反写,所以它的功能就与cat相反, cat 是由【第一行到最后一行连续显示在屏幕上】,而 tac 则是『【由最后一行到第一行反向在屏幕上显示出来 】。

    4.more (翻页查看)

    [root@xiaoluo ~]# more /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    sync:x:5:0:sync:/sbin:/bin/sync
    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    halt:x:7:0:halt:/sbin:/sbin/halt
    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
    operator:x:11:0:operator:/root:/sbin/nologin
    games:x:12:100:games:/usr/games:/sbin/nologin
    gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
    ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
    nobody:x:99:99:Nobody:/:/sbin/nologin
    dbus:x:81:81:System message bus:/:/sbin/nologin
    rpc:x:32:32:Rpcbind Daemon:/var/cache/rpcbind:/sbin/nologin
    usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
    abrt:x:173:173::/etc/abrt:/sbin/nologin
    pegasus:x:66:65:tog-pegasus OpenPegasus WBEM/CIM services:/var/lib/Pegasus:/sbin
    /nologin
    cimsrvr:x:134:134:tog-pegasus OpenPegasus WBEM/CIM services:/var/lib/Pegasus:/sb
    in/nologin
    --More--(36%)

    在使用more命令时,我们通常可以使用以下一些快捷键来帮助我们

    • 空格键 (space):代表向下翻一页;
    • Enter         :代表向下翻【一行】;
    • /字符串         :代表在这个显示的内容当中,向下搜寻【字符串】;
    • :f             :立刻显示出文件名以及目前显示的行数;
    • q             :代表立刻离开 more ,不再显示该文件内容。

    5. less (翻页查看)

    [root@xiaoluo ~]# less /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    sync:x:5:0:sync:/sbin:/bin/sync
    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    halt:x:7:0:halt:/sbin:/sbin/halt
    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
    operator:x:11:0:operator:/root:/sbin/nologin
    games:x:12:100:games:/usr/games:/sbin/nologin
    gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
    ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
    nobody:x:99:99:Nobody:/:/sbin/nologin
    dbus:x:81:81:System message bus:/:/sbin/nologin
    rpc:x:32:32:Rpcbind Daemon:/var/cache/rpcbind:/sbin/nologin
    usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
    abrt:x:173:173::/etc/abrt:/sbin/nologin
    pegasus:x:66:65:tog-pegasus OpenPegasus WBEM/CIM services:/var/lib/Pegasus:/sbin/nologin
    cimsrvr:x:134:134:tog-pegasus OpenPegasus WBEM/CIM services:/var/lib/Pegasus:/sbin/nologin
    /etc/passwd 

    less的用法比more要更灵活,使用more命令时我们没有办法向前翻页,只能往后看,而less命令可以通过(PageUp) (PageDown)来进行前后的翻页查看文件。
    less命令的一些常用快捷键操作如下:

    • 空格键    :向下翻动一页;
    • [pagedown]:向下翻动一页;
    • [pageup]  :向上翻动一页;
    • /字符串     :向下搜寻【字符串】的功能;
    • ?字符串     :向上搜寻【字符串】的功能;
    • n         :重复前一个搜寻 (与 / 或 ? 有关!)
    • N         :反向的重复前一个搜寻 (与 / 或 ? 有关!)
    • q         :离开 less 这个程序;

    6. head (取出前几行)

    [root@xiaoluo ~]# head [-n number] 文件 
    参数:
    -n  :后面接数字,代表显示几行的意思
    
    实例: [root@xiaoluo ~]# head /etc/man.config # 默认的情况中,显示前面十行!若要显示前 20 行,就得要这样: [root@xiaoluo ~]# head -n 20 /etc/man.config

    7.tail (取出后面几行)

    [root@xiaoluo ~]# tail [-n number] 文件 
    参数:
    -n  :后面接数字,代表显示几行的意思
    范例:
    [root@xiaoluo ~]#tail /etc/man.config
    # 默认的情况中,显示最后的十行!若要显示最后的 20 行,就得要这样:
    
    [root@xiaoluo ~]# tail -n 20 /etc/man.config

    四、1. touch 命令  (修改文件时间与创建新文件)

    [root@xiaoluo ~]# touch [-acdmt] 文件
    选项与参数:
    -a  :仅修订 access time;
    -c  :仅修改文件的时间,若该文件不存在则不创建新文件;
    -d  :后面可以接欲修订的日期而不用目前的日期,也可以使用 --date="日期或时间"
    -m  : 仅修改 mtime ;
    -t  : 后面可以接欲修订的时间而不用目前的时间,格式为[YYMMDDhhmm]
    实例一:新建一个空的文件
    [root@xiaoluo ~]# cd /home/
    [root@xiaoluo home]# touch test.txt
    [root@xiaoluo home]# ls -l test.txt 
    -rw-r--r--. 1 root root 0 4月  25 22:07 test.txt
    # 注意,这个文件的大小是 0 !在默认的状态下,如果 touch 后面有接文件,
    # 则该文件的三个时间 (atime/ctime/mtime) 都会更新为目前的时间。若该文件不存在,
    # 则会主动的创建一个新的空的文件!!
    
    实例二:将 ~/.bashrc 复制成为 bashrc,假设复制完全的属性,检查其日期
    [root@xiaoluo home]# cp -a ~/.bashrc bashrc
    [root@xiaoluo home]# ls -l bashrc 
    -rw-r--r--. 1 root root 177 4月   8 22:43 bashrc     <==这是 mtime
    [root@xiaoluo home]# ls -l --time=atime bashrc 
    -rw-r--r--. 1 root root 177 4月  25 21:48 bashrc     <==这是 atime
    [root@xiaoluo home]# ls -l --time=ctime bashrc
    -rw-r--r--. 1 root root 177 4月  25 22:08 bashrc     <==这是 ctime

    实例三:修改实例二的bashrc文件,将日期调整为三天前
    [root@xiaoluo home]# touch -d "3 days ago" bashrc
    [root@xiaoluo home]# ls -l bashrc ; ls -l --time=atime bashrc ; ls -l --time=ctime bashrc
    -rw-r--r--. 1 root root 177 4月  22 22:12 bashrc  <==这是 mtime
    -rw-r--r--. 1 root root 177 4月  22 22:12 bashrc  <==这是 atime
    -rw-r--r--. 1 root root 177 4月  25 22:12 bashrc  <==这是 ctime
    # 注意,日期在 atime 与 mtime 都改变了,但是 ctime 并没有改变!


    实例四:将实例三的bashrc日期改为 2013/4/24 23:23
    [root@xiaoluo home]# touch -t 1304242323 bashrc
    [root@xiaoluo home]# ls -l bashrc ; ls -l --time=atime bashrc ; ls -l --time=ctime bashrc
    -rw-r--r--. 1 root root 177 4月  24 23:23 bashrc  <==这是 mtime
    -rw-r--r--. 1 root root 177 4月  24 23:23 bashrc  <==这是 atime
    -rw-r--r--. 1 root root 177 4月  25 22:11 bashrc  <==这是 ctime

    五、文件与目录的默认权限与隐藏权限

    1.umask (文件默认权限)

    [root@xiaoluo home]# umask
    0022
    [root@xiaoluo home]# umask -S
    u=rwx,g=rx,o=rx

    查看方式有两种,一种可以直接输入 umask ,就可以看到数字型态的权限配置分数, 一种则是加入 -S (Symbolic) 这个选项,就会以符号类型的方式来显示出权限了。这里显示的 umask 有四组数字, 第一组是特殊权限用的,我们先不要理他,先看后面三组数字。
    在默认权限的属性上,目录与文件是不一样的。由于我们不希望文件具有可执行的权限,默认情况下,文件是没有可执行(x)权限的。因此:

    • 若使用者创建为 文件 则默认【没有可运行( x )权限】,亦即只有 rw 这两个权限,也就是最大为 666 分,默认权限如下: -rw-rw-rw-
    • 若使用者创建为 目录 ,则由于 x 与是否可以进入此目录有关,因此默认为所有权限均开放,亦即为 777 分,默认权限如下: drwxrwxrwx

    umask 指定的是【该默认值需要减掉的权限】因为 r、w、x 分别是 4、2、1 ,也就是说,当要拿掉能写的权限,就是输入 2 分,而如果要拿掉能读的权限,也就是 4 分,那么要拿掉读与写的权限,也就是 6 分,而要拿掉执行与写入的权限,也就是 3 分,如果我拿掉5 分的话,那就是拿掉读与执行的权限啦!如果以上面的例子来说明的话,因为 umask 为 022 ,所以 user 并没有被拿掉属性,不过 group 与 others 的属性被拿掉了 2 ( 也就是 w 这个属性 ),那么由于当使用者:

      • 建立档案时:(-rw-rw-rw-) – (-----w--w-) ==> -rw-r--r--
      • 建立目录时:(drwxrwxrwx) – (d----w--w-) ==> drwxr-xr-x
    [root@xiaoluo home]# umask
    0022
    [root@xiaoluo home]# touch test1
    [root@xiaoluo home]# mkdir test2
    [root@xiaoluo home]# ls -
    -rw-r--r--.  1 root    root            0 4月  25 22:29 test1
    drwxr-xr-x.  2 root    root         4096 4月  25 22:29 test2
    所以,umask与文件和目录的默认权限是有很大关系的。如果我们希望编写的文件具有的权限是 -rw-rw-r-- 权限,则此时应该将umask改成 002 才对。例如如下例子:

    [root@xiaoluo home]# umask 002  // 这样文件的默认权限就是默认 其他组权限拿掉 可读r权限
    [root@xiaoluo home]# touch test3 [root@xiaoluo home]# mkdir test4 -rw-rw-r--. 1 root root 0 4月 25 22:37 test3 drwxrwxr-x. 2 root root 4096 4月 25 22:37 test4
    2.

    更改文件权限:

    chgrp更改文件所属组    想要更改子目录以及子文件,-R

    chown更改文件的所有者  -R  只适用于目录

    chmod更改文件权限  r=4 w=2 x=1

           直接赋予:ugo=rwx  

           添加减少:ugo+/-rwx

           数字添加:r=4 w=2 x=1 chmod 741 [文件]

    六、文件隐藏属性

    chattr   [+-=][Asaci][文件名或目录名]  +-=分别表示增加,减少和设定

    添加:

            A:文件或目录的atime将不可修改

            s:数据同步写入磁盘中

            a:只能追加不能删除,非root用户不能设定该属性

            c:自动压缩该文件,读取时会自动解压

            i:文件不能重命名,删除、设定链接、写入及新增数据。

    参数:
    +   :增加某一个特殊参数,其他原本存在参数则不动。
    -   :移除某一个特殊参数,其他原本存在参数则不动。
    =   :设定一定,且仅有后面接的参数
    
    注意:这个属性设定上面,比较常见的是 a 与 i 的设定值,而且很多设定值必须要身为
    root 才能够设定的!
    范例:
    [root@xiaoluo home]# touch attrtest
    [root@xiaoluo home]# chattr +i attrtest
    [root@xiaoluo home]# rm attrtest
    rm:是否删除普通空文件 "attrtest"?y
    rm: 无法删除"attrtest": 不允许的操作
    # 只要给该文件加上了-i这个属性后,连 root 也没有办法将这个档案删除!
    [root@xiaoluo home]# chattr -i attrtest
    +i 可以让一个文件无法被更改


    2. lsattr (显示文件的隐藏属性)
    [root@xiaoluo ~]# lsattr [-adR] 文件或目录
    选项与参数:
    -a :将隐藏文件的属性也lie出来;
    -d :如果接的是目录,仅列出目录本身的属性而非目录内的文件名;
    -R :连同子目录的数据也一并列出来!

    [root@xiaoluo home]# chattr +aij attrtest
    [root@xiaoluo home]# lsattr attrtest     
    ----ia---j---e- attrtest

    七、搜索文件

    1.which (寻找"执行文件")

    [root@xiaoluo ~]# which [-a] command
    参数:
    -a :将所有可以找到的指令均列出,而不止第一个被找到的指令名称
    
    [root@xiaoluo ~]# which passwd  -->> 列出第一个找到的可执行文件
    /usr/bin/passwd    

    [root@xiaoluo ~]# which -a tracepath   -->> 列出所有找到的同名可执行文件
    /bin/tracepath /usr/sbin/tracepath

    这个指令是根据【PATH】这个环境变量所规范的路径,去搜寻【执行文件】的文件名。所以,重点是找出【执行文件】而已!且 which 后面接的是要是 完整的文件名字 。若加上 -a 参数,则可以列出所有的可以找到的同名执行文件,而非仅显示第一个而已。

    2.whereis (寻找特定文件)

    [root@xiaoluo ~]# whereis [-bmsu] 文件名或目录名
    参数:
    -b    :只找 binary 的文件
    -m :只找在说明文件 manual 路径下的文件 -s :只找 source 来源文件
    -u :没有说明文件的文件

    [root@xiaoluo ~]# whereis passwd
    passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man1/passwd.1.gz /usr/share/man/man5/passwd.5.gz
    # 任何与 passwd 有关的文件名都会被列出来

    [root@xiaoluo ~]# whereis -b passwd
    passwd: /usr/bin/passwd /etc/passwd

    [root@xiaoluo ~]# whereis -m passwd
    passwd: /usr/share/man/man1/passwd.1.gz /usr/share/man/man5/passwd.5.gz

    3.locate (寻找特定文件)

    [root@xiaoluo ~]# locate filename
    [root@xiaoluo ~]# locate passwd
    /etc/passwd
    /etc/passwd-
    /etc/dovecot/conf.d/auth-passwdfile.conf.ext
    /etc/pam.d/passwd
    /etc/samba/smbpasswd
    /etc/security/opasswd
    /etc/sysconfig/ha/web/secure/passwd.php
    /lib64/security/pam_passwdqc.so
    /lib64/security/pam_unix_passwd.so
    /usr/bin/RSA_SecurID_getpasswd
    ...............此处省略N个字!!!!!!.................

    locate的使用比whereis更简单,直接在后面输入 "文件的部分名称" 后,就能得到结果了。例如我们这个例子输入的是 locate passwd,那么,在完整的文件名(包含路径名称)中,只要其中有passwd,就会被搜索显示出来。如果忘记了某个文件的完整文件名时,这是以恶很方便好用的命令。
    locate来搜索文件也非常的快,这是因为locate与whereis命令一样都是从数据库中去搜索文件,所以比find命令直接去硬盘里搜索速度要快的多。

    4.find

    [root@xiaoluo ~]# find [PATH] [option] [action]
    参数:
    1. 与时间有关的参数:
       -atime n :表示访问或执行大于或小于n天的文件
       -ctime n :表示写入更改inode属性的时间大于或小于n天的文件
       -mtime n :表示写入时间大于或小于n天的文件
       -newer file :file 为一个存在的文件,意思是说,只要档案比 file 还要新,
                     就会被搜索出来2. 与使用者或组名有关的参数:
       -uid n :n 为数字,这个数字是用户的账号 ID,亦即 UID ,这个 UID 是记录在
                /etc/passwd 里面与账号名称对应的数字。这方面我们会在第四篇介绍。
       -gid n :n 为数字,这个数字是组名的 ID,亦即 GID,这个 GID 记录在
                /etc/group,
    -user name :name 为使用者账号名称 -group name:name 为组名,例如 users ; -nouser :寻找档案的拥有者不存在 /etc/passwd 的人! -nogroup :寻找档案的拥有群组不存在于 /etc/group 的文件! 当您自行安装软件时,很可能该软件的属性当中并没有文件拥有者, 这是可能的!在这个时候,就可以使用 -nouser 与 -nogroup 搜寻。 3. 与文件权限及名称有关的参数: -name filename:搜寻文件名为 filename 的文件; -size [+-]SIZE:搜寻比 SIZE 还要大(+)或小(-)的文件。这个 SIZE 的规格有: c: 代表 byte, k: 代表 1024bytes。所以,要找比 50KB 还要大的文件,就是『 -size +50k 』 -type TYPE :搜寻文件的类型为 TYPE 的,类型主要有:一般正规文件 (f), 装置文件 (b, c), 目录 (d), 连结文件 (l), socket (s), 及 FIFO (p) 等属性。

                                  可以使用下面的Linux find 命令删除非空目录,如:

                                  find ./ -name “dir1” -type d -exec rm -rf {} +或者

                                  find ./ -name “dir1” -type d -exec rm -rf  ;

                                  Linux find 命令结合xargs命令实现删除非空目录

    4. 额外可进行的动作:
       -exec command :command 为其他指令,-exec 后面可再接额外的指令来处理搜寻到
                       的结果。
       -print        :将结果打印到屏幕上,这个动作是预设动作!

            逻辑关系-a(与)-o(或)

    实例一:将过去系统上面 24 小时内有改变过内容 (mtime) 的文件列出
    [root@xiaoluo ~]# find / -mtime 实例二:寻找 /etc 底下的文件,如果文件日期比 /etc/passwd 新就列[root@xialuo ~]# find /etc -newer /etc/passwd
    实例三:搜寻 /home 底下属于 xiaoluo 的文件
    [root@xiaoluo ~]# find /home -user xiaoluo
    实例四:搜寻系统中不属于任何人的文件
    [root@xiaoluo ~]# find / -nouser 实例五:找出文件名为 passwd 这个文件
    [root@xiaoluo ~]# find / -name passwd 实例六:搜寻文件属性为 f (一般文件) 的文件 [root@xiaoluo ~]# find /home -type f 实例七:搜寻文件当中含有 SGID/SUID/SBIT 的属性 [root@xiaoluo ~]# find / -perm +7000 实例八:将上个范例找到的文件使用 ls -l 列出来
    [root@xiaoluo ~]# find / -perm +7000 -exec ls -l {} ; # 注意到,那个 -exec 后面的 ls -l 就是额外的指令, # 而那个 {} 代表的是【由 find 找到的内容】的意思~所以, -exec ls -l {} # 就是将前面找到的那些档案以 ls -l 列出长的数据!至于 ; 则是表示 # -exec 的指令到此为止的意思。 意思是说,整个指令其实只有在 # -exec (里面就是指令下达) ; # 也就是说,-exec 最后一定要以 ; 结束才行!

    实例九:找出系统中,大于 1MB 的文件 [root@xiaoluo ~]# find / -size +1000k


  • 相关阅读:
    iptraf查看TCP/UDP某个特定端口的带宽与流量
    linux read 命令
    2 css常识二
    1 css常识
    18 表单
    17 事件
    16 DOM
    15 BOM
    14 函数-高级
    13 对象
  • 原文地址:https://www.cnblogs.com/sxt0103/p/13858656.html
Copyright © 2011-2022 走看看