查找、壓縮 隨記

 查找模塊

1. locate : 非實時查找(數據庫查找)

    實時查找: find

locate 查詢是建立在系統上預建的文件索引數據庫

/var/lib/mlocate/mlocate.db

索引的構建是在系統較為空閑時自動進行(周期性任務); 管理員手動更新數據庫(updatedb)

索引構建過程需要遍歷整個根文件系統, 極度消耗資源。

2. locate 

-i 不區分大小寫

-r  '正則表達式'

locate 支持模糊查詢  

比如: locate pass 只要文件名中有pass就行, 這一點和find的命令的區別很大, find命令必須要搭配通配符, 表示一個完整的路徑 *pass*

3.locate 的優勢: 1>.運行速度非???2>.查找固定的文件(比如配置文件的話)效果非常好。

4. find : 實時查找、功能更加的強大、可以匹配到的查詢條件更多。

5.find [OPTION] … [查找路徑] [查找條件] [處理動作]

   查找條件:

   1>. 根據文件名和inode查找

-name 必須是個完整的路徑, 不支持模糊查詢 

如果有通配符話的, 必須用雙引號括起來

-iname 忽略大小寫

-inum  n  按inode號查找  

-samefile name  指向該文件硬鏈接數

-regex "PATTERN"  以PATTERN匹配整個條件路徑字符串,而不僅僅是文件名稱

   2>. 根據屬組、屬主查找:

-user

-group

-uid

-gid

-nouser  查找沒有屬主的文件

-nogroup 查找沒有屬組的文件

  3>. 查找文件類型查找

-type TYPE:

f: 普通文件

d: 目錄文件

l: 符號鏈接文件

s:套接字文件

b:塊設備文件

c: 字符設備文件

p: 管道文件

   4>. 組合條件:

find調用多個條件的時候,尤其當你后面還要加操作命令的話, 一定要記得用雙引號()括起來。雙引號必須通過\轉譯。并且雙引號的兩邊必須有空格。

  什么情況需要用用雙引號:1>用到德摩根定律  2>.多個判斷條件時, 并且后面跟上了操作命令。 

與: -a  多個條件時,默認就是與操作

或: -o   多個條件時,默認是或操作

比如:  find   -user zhangsan -o -type d

非: -not ,!

  find   -not -user root -a -type f 

./pp1

  find   ! -user root -a -type f 

./pp1

      5>. 查找條件:

-size [+-]#UNIT

K M G

#UNIT  (#-1,#] 

-#UNIT [0,#-1]

+#UNIT (#,無群大)

+-# 表示一個完全的路徑

+:>#到無窮大  #: (,#-1,#]  -#: 負無窮->#-1

根據文件大小查找文件在實際過程中, 用來查找大文件.

find /tmp -size +1G  //  用來查找/tmp目錄下文件大小大于1G的文件

6>. 根據時間戳:

atime [+|-]#.

#: [#,#+1]

+#: [#+1,…]

-#: [0,#)

mtime:

ctime:

以"分鐘"為單位:

-atime

-mtime

-ctime

// 用來查詢某段時間修改過的配置文件

find -mtime -10 /

查看10分鐘內修改過的文件

7>. 根據權限查找:

-perm [/|-]MODE

/MODE  只要3種對象必須有一種權限對上就行了

-MODE  三種對象在權限上都必須對上

       以上權限超了是沒有沒有關系的, 比如指定r, 你是rw, 這肯定是可以的

6. 處理動作:

-ls  ==  ll

-print 默認動作

-delete 

-fls file 指定到相應的文件中

-ok COMMAND {} \;  交互式的

-exec COMMAND {} \;  非交互式的 {} 表示你找到的文件

       find xxx | xargs COMMAND

例子:find /testdir -name "passwd" | xargs chmod +x

效果是查找出的命令會默認寫到COMMAND

7. 德摩根定理:

!(A and B) =! A or !B

!(A or B) = !A and !B

8. 排除指定目錄: 

find  /etc/ -path '/etc/sane.d' -a -prune -o -name "*.conf" | grep "sane"

-path '/etc/sane.d' -a -prune  排除該目錄 

上面的選項和-o命令搭配使用, 指定判定條件。

  壓縮模塊

1.  comperss   壓縮

    uncomperss  解壓縮

2. gzip [OPTION] … FILE …

    -d: 解壓縮, 相當于gunzip

    -c: 將壓縮或壓縮的結果輸出至標準輸出

    -#: 1-9, 指定壓縮比, 值越大壓縮比例越大

    zcat : 不顯示解壓縮的前提下查看文本文件內容

    比如:壓縮指令

gzip file  // 原文件被刪除

gzip -c file > file.gz  // 保留原文件

  解壓縮:

gzip -d file.gz

gunzip file.gz   //  刪除壓縮文件

zcat file.gz > file  // 保留壓縮文件

3. bzip2/bunzip2/bzcat 

bzip2 [OPTION] … FILE …

-k : keep, 保留原文件

-d:  解壓縮

-#: 1-9 壓縮比,默認為6

   bzcat : 不顯示壓縮的前提下查看文本文件內容

壓縮:

bzip2 file  // 刪除原文件

bzip2 -k file  // 保留原文件

解壓縮:

bunzip2 -k 壓縮文件  // 保留壓縮文件

bzip2 -d 壓縮文件

bzcat 壓縮文件 > 文件, 保留壓縮文件

4. xz :  新的壓縮技術

5.zip/unzip   // 可以打包壓縮, 可以壓縮目錄

-r: 用來指定壓縮后文件名,如果后面沒有指定.zip結尾, 默認自動添加.zip為結束符。

打包壓縮: 

zip -r sysconfig sysconfig/   

cat /var/log/messages | zip message –

解包解壓縮:

unzip sysconfig.zip

unzip -p message.zip > message  

隨記

1. . source bash 絕對路徑執行  4者的區別:

   .    source 

這兩種一般用來執行系統的腳本配置文件。執行后腳本中的變量是可以在當前shell中運行的。

bash   絕對路徑  

bash 是由當前shell子shell執行, 所以腳本中的變量是無法在當前shell中運行。

2. vim 編輯文檔的時候, 如何往tab鍵變為4個空格, 在命令擴展模式,編輯tabstop

:tabstop=5  // 就將tab鍵變為5個空格。

3. 無論是if 還是elif 后面都是 ; then, 這個模式是固定的, 只有else后面是不需要加任何東西的。

4.case 變量  in     第一句后面不需要:

值1):               值是支持通配符的

分支

;;

值2):

分支

;;

esac

5. 在shell編程中, 如果只是單純的為了執行某條命令或則是要把根據這條命令的是否執行成功而去做出相應的操作的話, 是不需要加 反引號 “

   只有想要將執行的結果賦予變量的時候, 需要加反引號 “

6. 雖然在shell編程中, 命令的執行的結果是0或則是非0, 但是這些值是不能直接被if for 語句調用。

7. grep -i xxx  忽略大小寫。

8. [[ $1 =~ 正則表達式 ]]  正則表達式是不需要加"", 雙引號的。加了, 就會報錯。  這個功能蠻重要。

9. 用來匹配字符串  [[ 變量 =~ 正則表達式 ]]

10. [[]]  雙括號中是不支持 -a -o 選項的。 條件與  條件或

11. 文件測試的功能非常強大, 一般性的要求都是可以直接返回直接去判斷的。

12. 用來抽取文本中的特定的一段的內容的時候, 一直使用sed命令分組替換,其實這樣很費事,如果可以通過grep -o 抽取出來是很方便的。

13. expr length  字符串  //  可以用來求字符串的長度

14./proc 目錄下, 有很多數字信息, 這些都是內存上進程變化的數據, 這些數據find命令是不可以查找的。

15. usermod -ou  uid號  用戶名  

// 忽略uid重復, 設置相同uid的用戶。 如果設置了相同的uid, 后面設置的用戶其實就是個傀儡, 這個用戶是可以訪問,但是訪問這個用戶其實訪問同UID的用戶。

16. 時間戳:

atime:  上次被查看的時間

mtime:  上次被編輯的時間

ctime:   上次元數據變化的時間

atime : 讀取文件的話, atime時間不會馬上改變, 當atime這個時間比mtime早的話,atime會改變。 還有一種是當aitme時間操作規定的時間的話,atime會也會改變。

17. 安裝外界包的時候, 大部分是先打包, 然后將包壓縮, 大部分的后組是.tar.gz, 或則是 .tar.bz2。

20.Windows默認使用的zip軟件壓縮文件, 這是Windows系統自帶的軟件, 右擊文件,發送到zip管理工具, 就壓縮了。

作業:

1、查找/var目錄下屬主為root,且屬組為mail的所有文件

1. find /var -user root -group mail

2、查找/var目錄下不屬于root、lp、gdm的所有文件

2.find /var ! \( -user root -user lp -user gdm \)

3、查找/var目錄下最近一周內其內容修改過,同時屬主不為root,也不是postfix的文件

3.find /var -mtime -7 -not -user root -not -user postfix

  find /var -mtime -7 -not (\ -user root -or -user postfix \)

4、查找當前系統上沒有屬主或屬組,且最近一個周內曾被訪問過的文件

4. find / -nouser -nogroup  -mtime -7

5、查找/etc目錄下大于1M且類型為普通文件的所有文件

5. find /etc -size +1M -type f

6、查找/etc目錄下所有用戶都沒有寫權限的文件

6. find /etc -not -perm /222

7、查找/etc目錄下至少有一類用戶沒有執行權限的文件

find /etc -not -perm -222

8、查找/etc/init.d目錄下,所有用戶都有執行權限,且其它用戶有寫權限的文件

8. find /etc/init.d -perm -113

find /etc/init.d/ -perm -111 -perm 002

原創文章,作者:458813466,如若轉載,請注明出處:http://www.www58058.com/34886

(0)
458813466458813466
上一篇 2016-08-15
下一篇 2016-08-15

相關推薦

  • 從Linux小白到大?!c狼共舞的日子12(下)

    馬哥教育網絡班21期+第12周課程練習 5、為第4題中的第2個虛擬主機提供https服務,使得用戶可以通過https安全的訪問此web站點; (1)要求使用證書認證,證書中要求使用的國家(CN)、州(HA)、城市(ZZ)和組織(MageEdu); (2)設置部門為Ops,主機名為www2.stuX.com,郵件為admin@stuX.com; 1.CA生成私…

    Linux干貨 2016-12-26
  • Shell腳本編程 流程控制—循環

    循環:重復執行所指定的代碼片段,直到循環條件不滿足,則退出循環 一、for循環     語法格式:     for 變量名 in 列表     do         循環體     done &nbs…

    Linux干貨 2016-08-24
  • vsftpd基于mysql存儲認證(centos7)

    (1)首先開發包組和服務器平平臺開發包組 (2)yum安裝需要的依賴包 (3)編譯安裝pam_mysql模塊 (4)配置mysql,并添加mysql中的vsftpd進程用戶,且創建vsftpd數據庫,并將vsftpd數據庫授權給vsftpd用戶,且創建vsftpd.users表,并在表中添加用戶tom (5)創建vsftpd要上傳和下載的URL (6)創建基…

    Linux干貨 2016-10-15
  • 常見RAID級別

    什么是RAID?     獨立磁盤冗余陣列(RAID,Redundant Arrary of Independent Disks),舊稱廉價磁盤冗余陣列(Redundant Arrary of Inexpensive Disks),簡稱磁盤陣列。基本思想就是把多個相對便宜的硬盤組合起來,成為一個硬盤陣列組,使性能達到甚至超過一個價格昂貴、…

    Linux干貨 2016-05-29
  • 本地yum倉庫配置以及創建yum倉庫

    如何使用光盤當做本地yum倉庫?     1.掛載光盤至某目錄,例如/media/cdrom      [root@CentOS7 ~]# mount /dev/cdrom /media/cdrom/ mount: /dev/sr…

    Linux干貨 2016-08-23
  • 構建NP和NMP

    實驗一、構建NP (一)實驗布置:兩臺虛擬機充當代理服務器和后端服務器,一臺虛擬機充當客戶端。 (二)實驗目的:實現NP的搭建。 (三)實驗圖解: (四)實驗步驟: 1、  在后端服務器安裝php-fpm文件,修改PHP-FPM的配置文件,vim/etc/php-fpm.d/www.conf文件,如下: listen = 127.0.0.1:900…

    2017-05-07
欧美性久久久久