文件查找與解壓縮

文件查找:

  1. which 查找可以執行文件,只搜索$PATH里的目錄

$ which ls /bin/ls which只搜索$PATH里的目錄,如果搜索當前目錄的文件是沒有任何結果的

$ ls -l 總用量 0 -rw-rw-r– 1 huanghao huanghao 0 3月 1 12:24 a.txt $ which a.txt

  1. whereis 與which差不多,只不過它會查找幫助文件,還會查找庫文件

$ whereis ls ls: /bin/ls /usr/share/man/man1/ls.1.gz

$ whereis libip6tc.so.0 libip6tc.so: /lib/libip6tc.so.0

#搜索一個文件,不管文件存在不存在,返回結果永遠是不帶擴展名的文件名+ : $ whereis b.txt
b:

  1. slocate, locate

這兩個放在一起說,是因為slocate實際上軟鏈接到了locate,它倆是一樣的,ubuntu里是mlocate

locate passwd

/etc/passwd

/etc/passwd-

/etc/cron.daily/passwd

/etc/init/passwd.conf

/etc/pam.d/chpasswd

/etc/pam.d/passwd

/etc/security/opasswd

/home/huangxm/passwd

/home/huangxm/passwd-

/home/huangxm/cron.daily/passwd

/home/huangxm/init/passwd.conf

它把所有包含passwd的文件都查找出來了,我們新建一個文件newfile.txt,查找一下

locate newfile.txt

卻沒有返回任何結果,可以newfile.txt明明存在,但它是剛剛創建的。

實際上locate并不是在文件系統里查找文件,而是在它的數據庫/var/lib/slocate/slocate.db中查,ubuntu 是 /vra/lib/mlocate/mlocate.db

接下來更新一下該數據庫

updatedb

locate newfile.txt /home/huanghao/test/newfile.txt找到了,所以如果數據庫不更新,

locate是無法查找到新創建的文件的;但是總不能每次使用都更新db吧。 所以linux中每天有計劃任務來更新db,看一下

  1. find 這個就是踏踏實實的從硬盤查找文件了

find newfile.txt 在當前目錄中查找

find / -name a.txt 從/開始查找文件a.txt

find / -name “newfile‘” #從/開始查找所有包含newfile的文件

find / -name “newfile‘” -ls 查找并列出文件屬性

find / -name “newfile‘” -exec file {} ; #查找并執行file命令 {}的意思是將查找的結果放進去

find / -name “newfile‘” -ok rm {} ; #查找并刪除,-ok是提示需要交互, -exec是不提示,直接執行

find /home -user shrek -ls #查找屬于用戶shrek的文件并列出來

find /home -user shrek -a -group shrek -a -type d -ls #查找屬于用戶shrek并且屬于組shrek的目錄 -a是and的意思

#其它參數 -user -group -type -perm 權限 -size 大小 -mtime 時間

詳細看一下權限查找

find / -perm +777 -type d -ls 權限是用9位二進制數表示的,+777 的意思是指9位中任何一位有1的權限,通俗點說就是任意權限 find / -perm -777 -type d –ls -777 的意思是所有位都是1,即查找777權限的目錄,這個操作還是很有用的。

  1. grep 這個是查找文件內容的

grep root /etc/passwd #在passwd中查找包含root的行

root:x:0:0:root:/root:/bin/bash

grep -R root /etc #在/etc下所有文件及子文件中查找

/etc/anacrontab:HOME=/root

/etc/anacrontab:LOGNAME=root

/etc/cron.weekly/man-db: chown man:root /var/cache/man || true

/etc/shadow:root:$6$TXA2sjeg$/yQGd91.Fq0kF6RNkT.sHkCzdwGs8yU4Ucz

EnVAO.Td7sBweenU.R0Gcn2DBwXhos/n6tircXjxWkl.3voaLA.:16847:0:99999:7:::

上面遞歸查找時顯示了很多內容,如果我們只想顯示包含查找內容的文件

,可加l參數

grep -R -l root /etc

/etc/anacrontab

/etc/cron.weekly/man-db

/etc/shadow

/etc/sysctl.d/10-kernel-hardening.conf

/etc/passwd

/etc/group

/etc/cron.daily/man-db

/etc/cron.daily/apt

/etc/grub.d/20_linux_xen

/etc/grub.d/30_os-prober

/etc/grub.d/20_memtest86+

總結一下:

  1. 如果查找可執行文件,用which

  2. locate查找文件速度非???,但是需要更新db,如果沒有更新,可能查不到最新的文件

  3. find 很強,但是查找速度慢

  4. 如果要查找文件中的內容,用grep

文件壓縮及解壓

  1. gzip 壓縮成.gz, 原文件會被刪除 , 壓縮率較高

    gunzip 解壓

    gzip –d 和上面一樣,解壓

tar命令

tar本來是打包命令,是將一系列文件及文件夾打包,現在tar命令也可以用來壓縮,先看一下有哪些參數

-c 創建打包文件

-v 將打包過程輸出

-x 解包

-r 將文件添加到已存在的tar包中

-t 查看包內容

-z 壓縮

$ tar cvf a.tar .

./ ./a.txt tar: ./a.tar: 文件是歸檔文件;未輸出 ./newfile.txt 后面的.是指當前目錄, 將當前目錄打包成a.tar,并存放在當前目錄中

$ tar cvf b.tar ~/test

tar: 從成員名中刪除開頭的“/”

/home/god/test/

/home/god/test/a.txt

/home/god/test/a.tar

/home/god/test/newfile.txt

$ tar -tvf b.tar

drwxrwxr-x god/god 0 home/god/test/

-rw-rw-r– god/god home/god/test/a.txt

-rw-rw-r– god/god 10240

home/huanghao/test/a.tar

-rw-rw-r– god/god

home/huanghao/test/newfile.txt

這里壓縮包的內容里文件都帶上了路徑,注意這兩種方式的區別。

當然也可以將不同目錄的文件打包到一個文件中:

$ tar cvf b.tar a.txt /etc/passwd

a.txt tar: 從成員名中刪除開頭的“/” /etc/passwd 解壓:

$ tar xvf a.tar #解壓到當前文件夾 ./ ./a.txt ./newfile.txt $ tar xvf a.tar -C ./a #解壓到當前目錄的目錄a中 ./ ./a.txt ./newfile.txt

打包并壓縮’

$ tar cvfz c.tar.gz /etc/passwd a.txt #也可以打包壓縮不同目錄的文件 tar: 從成員名中刪除開頭的“/” /etc/passwd a.txt 同樣解壓也可以用-C解壓到其它目錄中

$ tar xvfz c.tar.gz -C ./a etc/passwd a.txt

linux tar打包

例一:將整個 /etc 目錄下的文件全部打包成為 /tmp/etc.tar

[root@linux ~]# tar -cvf /tmp/etc.tar /etc <==僅打包,不壓縮!

[root@linux ~]# tar -zcvf /tmp/etc.tar.gz /etc <==打包后,以 gzip 壓縮

[root@linux ~]# tar -jcvf /tmp/etc.tar.bz2 /etc <==打包后,以 bzip2 壓縮

特別注意,在參數 f 之后的文件檔名是自己取的,我們習慣上都用 .tar 來作為辨識。

如果加 z 參數,則以 .tar.gz 或 .tgz 來代表 gzip 壓縮過的 tar file ~

如果加 j 參數,則以 .tar.bz2 來作為附檔名啊~

上述指令在執行的時候,會顯示一個警告訊息:

『tar: Removing leading `/” from member names』那是關于絕對路徑的特殊設定。

例二:查閱上述 /tmp/etc.tar.gz 文件內有哪些文件? [root@linux ~]# tar -ztvf /tmp/etc.tar.gz

由于我們使用 gzip 壓縮,所以要查閱該 tar file 內的文件時, 就得要加上 z 這個參數了!這很重要的

例三:將 /tmp/etc.tar.gz 文件解壓縮在 /usr/local/src 底下

[root@linux ~]# cd /usr/local/src

[root@linux src]# tar -zxvf /tmp/etc.tar.gz

在預設的情況下,我們可以將壓縮檔在任何地方解開的!以這個范例來說, 我先將工作目錄變換到 /usr/local/src 底下,并且解開 /tmp/etc.tar.gz ,

則解開的目錄會在 /usr/local/src/etc 呢!另外,如果您進入 /usr/local/src/etc

則會發現,該目錄下的文件屬性與 /etc/ 可能會有所不同

例四:在 /tmp 底下,我只想要將 /tmp/etc.tar.gz 內的 etc/passwd 解開而已

[root@linux ~]# cd /tmp

[root@linux tmp]# tar -zxvf /tmp/etc.tar.gz etc/passwd

我可以透過 tar -ztvf 來查閱 tarfile

內的文件名稱,如果單只要一個文件,

就可以透過這個方式來下達!注意到! etc.tar.gz 內的根目錄 / 是被拿掉了!

例五:將 /etc/ 內的所有文件備份下來,并且保存其權限!

[root@linux ~]# tar -zxvpf /tmp/etc.tar.gz /etc

這個 -p 的屬性是很重要的,尤其是當您要保留原本文件的屬性時!

例六:在 /home 當中,比 2005/06/01 新的文件才備份

[root@linux ~]# tar -N ‘2005/06/01′ -zcvf home.tar.gz /home

例七:我要備份 /home, /etc ,但不要 /home/dmtsai [root@linux ~]# tar –exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc

例八:將 /etc/ 打包后直接解開在 /tmp 底下,而不產生文件! [root@linux ~]# cd /tmp [root@linux tmp]# tar -cvf – /etc | tar -xvf –

這個動作有點像是 cp -r /etc /tmp 依舊是有其有用途的!

要注意的地方在於輸出檔變成 – 而輸入檔也變成 – ,又有一個 | 存在~

這分別代表 standard output, standard input 與管線命令

.tar

解包:tar xvf FileName.tar

打包:tar cvf FileName.tar DirName(注:tar是打包,不是壓縮!)

.gz

解壓1:gunzip FileName.gz

解壓2:gzip -d FileName.gz

壓縮:gzip FileName

.tar.gz 和 .tgz

解壓:tar zxvf FileName.tar.gz

壓縮:tar zcvf FileName.tar.gz DirName

.bz2

解壓1:bzip2 -d FileName.bz2

解壓2:bunzip2 FileName.bz2

壓縮: bzip2 -z FileName

.tar.bz2

解壓:tar jxvf FileName.tar.bz2 或tar –bzip xvf FileName.tar.bz2

壓縮:tar jcvf FileName.tar.bz2 DirName

.bz

解壓1:bzip2 -d FileName.bz

解壓2:bunzip2 FileName.bz

壓縮:未知

.tar.bz

解壓:tar jxvf FileName.tar.bz

壓縮:未知

.Z

解壓:uncompress FileName.Z

壓縮:compress FileName

.tar.Z

解壓:tar Zxvf FileName.tar.Z

壓縮:tar Zcvf FileName.tar.Z DirName

.zip

解壓:unzip FileName.zip

壓縮:zip FileName.zip DirName

壓縮一個目錄使用 -r 參數,-r 遞歸。例: $ zip -r FileName.zip DirName

.rar

解壓:rar x FileName.rar

壓縮:rar a FileName.rar DirName

rar請到:http://www.rarsoft.com/download.htm 下載!

解壓后請將rar_static拷貝到/usr/bin目錄(其他由$PATH環境變量指定的目錄也可以)

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

(0)
charlestcharlest
上一篇 2017-08-04
下一篇 2017-08-04

相關推薦

  • gzip壓縮輸出

    一、gzip介紹          gzip是GNU zip的縮寫,它是一個GNU自由軟件的文件壓縮程序,也經常用來表示gzip這種文件格式。軟件的作者是Jean-loup Gailly和Mark Adler。1992年10月31日第一次公開發布,版本號是0.1,目前的穩定版本是…

    Linux干貨 2015-07-29
  • 13grep和正則表達式

    grep:Global search REgular expression and Print out the line . 文本過濾工具,根據用戶指定的模式對目標文本進行匹配檢查;打印匹配到的行。過濾即不改變原來文本數據。 grep [options] PATTERN [file…] –color=auto: 對匹配到的文本著色顯示…

    Linux干貨 2016-11-27
  • 文件查找locate 和 find

    大綱 一、前言 二、locate 三、find 一、前言 在windows下,我們查找文件,可以在搜索里面,輸入文件名或通配符就可以進行搜索。在Linux下,要查找文件可以找locate 或 find命令進行查找,而且這些命令還有其他特別的功能。 二、locate 特點:此命令是非實時查找命令,依賴于索引,因此搜索速度快。但是索引的構建是當系統空閑時由系統自…

    Linux干貨 2015-05-11
  • 流式傳輸的兩大主流種類及流式傳輸特點

     流式傳輸定義很廣泛,現在主要指通過網絡傳送媒體(如視頻、音頻)的技術總稱。其特定含義為通過Internet 將影視節目傳送到PC機。實現流式傳輸有兩種方法:實時流式傳輸(Realtime streaming)和順序流式傳輸(progressive streaming)。(百度百科)     在網絡上傳輸音/視頻(英文…

    Linux干貨 2015-04-10
  • 強大的文本處理工具:vim編輯器

    一:引言 系統管理員的重要工作就是修改與設置某些軟件的重要配置文件,而vim作為vi編輯器的升級版本,不僅能夠以不同顏色來顯示文字內容,還能夠進行諸如shell腳本、C等程序的編寫,所以,它還是一個程序編輯器,接下來,就讓我們一起來看看vim的有哪些好玩的用法和特征。 二:vim三種模式及其常見用法 雖然vim有非常龐大甚至說它復雜也不為過的功能體系,但用結…

    2017-08-05
  • linux基礎命令之ls命令

                    linux 基本命令之ls命令   ls (list): 列出指定目錄下的內容,默認 ls=’ls –color=auto’,通過命…

    Linux干貨 2017-03-26
欧美性久久久久