查找、壓縮 隨記

 查找模塊

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 09:25
下一篇 2016-08-15 09:25

相關推薦

  • 2016/10/14作業

    2016/10/14作業: ##操作類: 1. 設置自己的終端提示符,要求字符終端登錄時: a> 需要帶顏色  b> 需要顯示當前執行到了第幾條命令  c> 顯示當前登錄終端,主機名和當前時間 答:要在用戶登錄時終端提示符,需要更改當前系統的環境變量: /etc/bashrc文件 #[ "$PS1" …

    Linux干貨 2016-10-19
  • 上古神器之vim

    sed 前言:前面學到了文本處理三劍客之一grep,但是grep在有些時候顯得力不從心,我們需要一款針對行操作的處理工具,沒錯,這就是sed流編輯器。 sed用法提煉: sed 's/(text1)(text2)(text3)/\1\2\3/'  vim 前言:強大的Linux如果沒有一款瘋狂的編輯器,常用的編輯操作會…

    Linux干貨 2016-08-12
  • tar ,cpio打包解壓. shell腳本for,while,until循環. rpm包管理,循環的特殊用法. select循環菜單,函數function,rpm包查詢,yum

    tar  tar -cf 路徑+文件名字后續.tar  +路徑 創建歸檔壓縮 tar cf /testdir/etc.tar /etc/ tar cvf 可以查看解壓過程 tar tvf 預覽作用 tar xvf 解壓文件  tar zcvf /testdir/etc2.tar.gz /etc/ 解壓再壓縮到指定路徑,文件格式 …

    Linux干貨 2016-08-21
  • 推薦-虛擬化網絡之OpenvSwitch(二)

    上一篇介紹了openvswitch的基礎知識,接下來我們來做一個實驗,利用GRE通道搭建一個跨多宿主機的虛擬化網絡,深入了解openvswitch的功能。 一、實驗拓撲 ip地址分配:  A1:192.168.10.1/24  A2:192.168.10.10/24   B1:192.168.10.2/24 &nbsp…

    2016-03-27
  • mysql5.6 GTID的實現以及maridb 10.9多主一從的架構

    一、MySQL 5.6 以后出現的GTID:     GTID概念:          1. GTID是一個由服務器的UUID和事務序號組成的唯一事務序號       &…

    Linux干貨 2015-12-18
  • Linux程序包管理之RPM

    Linux程序包管理之RPM RPM概念 rpm是什么 RPM 是Ret Hat Package Manager(RPM軟件包管理器)的縮寫,遵循GPL協議,可以運行在各種Linux上,公認的行業標準。 rpm干什么 對于終端用戶來說 簡化了Linux系統的安裝、卸裝、更新和升級的過程,用命令完成 對于開發者來說 RPM允許把軟件編碼包裝成源代碼和程序包提供…

    Linux干貨 2016-11-22
欧美性久久久久