1. 程式人生 > >linux find基本用法

linux find基本用法

  1. 定義一個對所有使用者都生效的命令別名

     要在全域性生效,可在/etc/profile.d資料夾下建立.sh結尾檔案

    如:touch env.sh

          加入 alisa cdnet='cd /etc/sysconfig/network-scripts/'  

          . env.sh 讓它生效

    測試結果如下:

    su - dcrfan

    Last login: Fri Nov  9 00:17:27 CST 2018 on :0

    [[email protected] ~]$cdnet

    [[email protected]

    network-scripts]$pwd

    /etc/sysconfig/network-scripts


  2. 顯示/etc/passwd檔案中不以/bin/bash結尾的行

    執行grep -v ".*/bin/bash$" /etc/passwd 

    結果:

    [[email protected] network-scripts]#grep -v ".*/bin/bash$" /etc/passwd 

    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

    operator:x:11:0:operator:/root:/sbin/nologin

    games:x:12:100:games:/usr/games:/sbin/nologin

    ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

    nobody:x:99:99:Nobody:/:/sbin/nologin

    systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin

    dbus:x:81:81:System message bus:/:/sbin/nologin

    polkitd:x:999:998:User for polkitd:/:/sbin/nologin

    abrt:x:173:173::/etc/abrt:/sbin/nologin

    libstoragemgmt:x:998:997:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin

    rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin

    colord:x:997:996:User for colord:/var/lib/colord:/sbin/nologin

    saslauth:x:996:76:Saslauthd user:/run/saslauthd:/sbin/nologin

    rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin

    chrony:x:995:993::/var/lib/chrony:/sbin/nologin

    qemu:x:107:107:qemu user:/:/sbin/nologin

    tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin

    usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin

    geoclue:x:994:991:User for geoclue:/var/lib/geoclue:/sbin/nologin

    rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin

    nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin

    radvd:x:75:75:radvd user:/:/sbin/nologin

    setroubleshoot:x:993:990::/var/lib/setroubleshoot:/sbin/nologin

    pulse:x:171:171:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin

    gdm:x:42:42::/var/lib/gdm:/sbin/nologin

    gnome-initial-setup:x:992:987::/run/gnome-initial-setup/:/sbin/nologin

    sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

    avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin

    postfix:x:89:89::/var/spool/postfix:/sbin/nologin

    ntp:x:38:38::/etc/ntp:/sbin/nologin

    tcpdump:x:72:72::/:/sbin/nologin

    tom:x:5001:5001::/tmp/tom:/bin/zsh


  3.找出/etc/passwd檔案中,包含二位數字或者三位數字的行

    執行命令egrep   ".*\b[0-9]{2,3}\b" /etc/passwd

    結果如下

    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

    operator:x:11:0:operator:/root:/sbin/nologin

    games:x:12:100:games:/usr/games:/sbin/nologin

    ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

    nobody:x:99:99:Nobody:/:/sbin/nologin

    systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin

    dbus:x:81:81:System message bus:/:/sbin/nologin

    polkitd:x:999:998:User for polkitd:/:/sbin/nologin

    abrt:x:173:173::/etc/abrt:/sbin/nologin

    libstoragemgmt:x:998:997:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin

    rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin

    colord:x:997:996:User for colord:/var/lib/colord:/sbin/nologin

    saslauth:x:996:76:Saslauthd user:/run/saslauthd:/sbin/nologin

    rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin

    chrony:x:995:993::/var/lib/chrony:/sbin/nologin

    qemu:x:107:107:qemu user:/:/sbin/nologin

    tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin

    usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin

    geoclue:x:994:991:User for geoclue:/var/lib/geoclue:/sbin/nologin

    rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin

    radvd:x:75:75:radvd user:/:/sbin/nologin

    setroubleshoot:x:993:990::/var/lib/setroubleshoot:/sbin/nologin

    pulse:x:171:171:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin

    gdm:x:42:42::/var/lib/gdm:/sbin/nologin

    gnome-initial-setup:x:992:987::/run/gnome-initial-setup/:/sbin/nologin

    sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

    avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin

    postfix:x:89:89::/var/spool/postfix:/sbin/nologin

    ntp:x:38:38::/etc/ntp:/sbin/nologin

    tcpdump:x:72:72::/:/sbin/nologin


  4. 顯示/proc/meminfo檔案中以大寫字母或小寫字母S開頭的行

    grep "^[sS]" /proc/meminfo 

    sed -n /^[sS]/p /proc/meminfo

    grep -i "^s" /proc/meminfo

        結果如下     

        SwapCached:         3268 kB

        SwapTotal:       2097148 kB

        SwapFree:        2049412 kB

        Shmem:             12928 kB

        Slab:             100388 kB

        SReclaimable:      52500 kB

        SUnreclaim:        47888 kB

   

   5.使用echo輸出一個絕對路徑,使用egrep去除路徑名,類似dirname  /etc/passwd 的結果

        執行命令 echo /etc/postfix/access/ | egrep -o ".*/."|egrep -o ".*/"|egrep -o ".*[^/]" 

        /etc/postfix

   

   6.找出ifconfig中的ip地址。

      ifconfig eth0 | grep "inet "|tr -s " "|cut -d" " -f3

        192.168.1.103


   7.vim定製自動縮排4個字元

      修改etc/vim/vimrc 或者 家目錄的.vimrc檔案

        新增set tabstop=4


   8.編寫指令碼實現自動新增三個使用者,並計算三個使用者的uid之和

      #!/bin/bash

    declare -i sumid

    for i in {1..3};do

          if useradd user$i &>/dev/null ;then

                  echo "the user$i is successful add"

                  else

                         echo "the user$i is exist"

         fi

                 id=`grep user$i /etc/passwd|cut -d":" -f3`

                  let sumid=sumid+id

     done

    echo "the sumuid is "$sumid""  

   執行指令碼結果如下:

    ./autoadduser.sh 

    the user1 is successful add

    the user2 is successful add

    the user3 is successful add

    the sumuid is 15009


   9.find基本用法

    find [OPTION]... [查詢路徑] [查詢條件] [處理動作]

     查詢路徑:指定具體目標路徑;預設為當前目錄  

     查詢條件:指定的查詢標準,可以檔名、大小、型別、 許可權等標準進行;預設為找出指定路徑下的所有檔案 

     處理動作:對符合條件的檔案做操作,預設輸出至屏

    查詢條件

    -maxdepth  level 最大搜索目錄深度,指定目錄為第1級 

    -mindepth level 最小搜尋目錄深度 

    -name "檔名稱":支援使用萬用字元   *, ?, [], [^]  

    -iname "檔名稱":不區分字母大小寫  

    -inum n  按inode號查詢  -samefile name  相同inode號的檔案  

    -links n   連結數為n的檔案  

    -regex "PATTERN":以PATTERN匹配整個檔案路徑字 符串,而不僅僅是檔名稱 ;正則匹配不能夠只匹配部分,要匹配完全路徑

    -user USERNAME:查詢屬主為指定使用者(UID)的檔案  

    -group GRPNAME: 查詢屬組為指定組(GID)的檔案  

    -uid UserID:查詢屬主為指定的UID號的檔案  

    -gid GroupID:查詢屬組為指定的GID號的檔案  

    -nouser:查詢沒有屬主的檔案  

    -nogroup:查詢沒有屬組的檔案 

    -empty 搜尋空檔案和空目錄之類的 !取反 

    -type TYPE:   • f: 普通檔案 • d: 目錄檔案 • l: 符號連結檔案 • s:套接字檔案 • b: 塊裝置檔案 • c: 字元裝置檔案 • p: 管道檔案 

     -size [+|-]#UNIT   常用單位:k, M, G,c(byte) -2k 表示0到1k檔案;2k 表示1k(但不包括1k)到2k檔案 ;+2k 表示大於2k(不包括2k)檔案

     -atime(min) -mtime(min) -ctime(min) -2 表示0到2天(不包括2天)檔案 ; 2表示2到3天(不包括3天)檔案 :+2 表示3天以上檔案

     -perm   666 精確匹配 ;  /666 (或) 只要有一個使用者滿足6或以上許可權就匹配 ;-666(並且) 要三個使用者滿足6或以上許可權才可以 ; 如果出現0表示不判該使用者許可權 例如 /002 表示不判斷所屬組和所屬使用者只判斷其他人滿足2以上許可權 -002 也如此判斷; 但精確匹配時0表示為沒許可權

     -a 與操作 -o 或操作 !非操作         !A -a !B = !(A -o B)  !A -o !B = !(A -a B) 

    處理動作

     -print:預設的處理動作,顯示至螢幕 

     -ls:類似於對查詢到的檔案執行“ls -l”命令 

     -delete:刪除查詢到的檔案 

     -fls file:查詢到的所有檔案的長格式資訊儲存至指定檔案中 

     -ok COMMAND {} \; 對查詢到的每個檔案執行由COMMAND 指定的命令,對於每個檔案執行命令之前,都會互動式要求用 戶確認 

     -exec COMMAND {} \; 對查詢到的每個檔案執行由 COMMAND指定的命令

                                     {}: 用於引用查詢到的檔名稱自身 

     -path "目錄"  -a -prune  排除某個目錄

   find 命令的動作可以用 |xargs 命令  來傳遞引數分割處理 :find | xargs COMMAND 

   示例:

      find /etc/ -maxdepth 3 -mindepth 3    找在/etc/目錄第3層檔案

      find /etc/ -path "/etc/sane.d" -a -prune -o -name "*.conf" 查詢/etc/下的.conf結尾檔案,排除/etc/sane.d目錄

      find /etc/ \( -path "/etc/sane.d" -o -path "/etc/speech-dispatcher" \) -a -prune -o -name "*.conf" 排除兩個目錄

      find /etc/ ! -perm /222 -ls  查詢/etc/下所有人都沒有寫許可權

      find  -name "test*" -exec rm -r {} \  或者 find -type d -name "test*" -delete  刪除test開頭的目錄

      find /sbin -perm /7000 -ls  查詢/sbin 下具有特殊許可權的檔案 suid guid等

      find /data –type  f -perm 644  -name “*.sh” –exec chmod 755 {} \;  把/data/目錄下的 .sh結尾檔案加上執行許可權

      find ~ -perm -002  -exec chmod o-w {} \ ;  在你的主目錄中尋找可被其它使用者寫入的檔案 並去掉其他使用者寫許可權

      find  -name  “*.conf”  -exec  cp {}  {}.orig  \;   備份配置檔案,新增.orig這個副檔名 

      find /tmp -ctime +3 -user dcrfan -ok rm {} \;   提示刪除存在時間超過3天以上的dcrfan的臨時檔案