一.文件查找
locate與find是經常使用的Linux 命令,剛接觸Linux時對這兩個命令的使用傻傻的分不清。現在我們來對比一下兩個命令到底有哪些區別。
1.1 locate
locate讓使用者可以很快速的搜尋檔案系統內是否有指定的檔案。其方法是先建立一個包括系統內所有檔案名稱及路徑的數據庫,之后當尋找時就只需查詢這個數據庫,而不必實際深入檔案系統之中了。在一般的 distribution 之中,數據庫的建立都被放在 crontab 中自動執行。
1.1.1 命令格式:
Locate [選擇參數] [樣式]
1.1.2 命令功能:
locate命令可以在搜尋數據庫時快速找到檔案,locate為模糊查找,數據庫由updatedb程序來更新,updatedb是由cron daemon周期性建立的,locate命令在搜尋數據庫時比由整個由硬盤資料來搜尋資料來得快,但較差勁的是locate所找到的檔案若是最近才建立或 剛更名的,可能會找不到,在內定值中,updatedb每天會跑一次,可以由修改crontab來更新設定值。(etc/crontab)
locate指定用在搜尋符合條件的檔案,它會去儲存檔案與目錄名稱的數據庫內,locate查詢文件時,會去搜索/var/lib/mlocate/mlocage.db,尋找合乎范本樣式條件的檔案或目錄錄,可以使用特殊字元(如”” 或”?”等)來指定范本樣式,如指定范本為kcpaner, locate會找出所有起始字串為kcpa且結尾為ner的檔案或目錄,如名稱為kcpartner若目錄錄名稱為kcpa_ner**則會列出該目錄下包括 子目錄在內的所有檔案。
locate指令和find找尋檔案的功能類似,但locate是透過update程序將硬盤中的所有檔案和目錄資料先建立一個索引數據庫,在 執行loacte時直接找該索引,查詢速度會較快,索引數據庫一般是由操作系統管理,但也可以直接下達update強迫系統立即修改索引數據庫。
1.1.3 命令參數:
-e 將排除在尋找的范圍之外。
-1 如果 是 1.則啟動安全模式。在安全模式下,使用者不會看到權限無法看到 的檔案。這會始速度減慢,因為 locate 必須至實際的檔案系統中取得檔案的權限資料。
-f 將特定的檔案系統排除在外,例如我們沒有到理要把 proc 檔案系統中的檔案 放在資料庫中。
-q 安靜模式,不會顯示任何錯誤訊息。
-n 至多顯示 n個輸出。
-r 使用正規運算式 做尋找的條件。
-o 指定資料庫存的名稱。
-d 指定資料庫的路徑
-h 顯示輔助訊息
-V 顯示程式的版本訊息
1.1.4 使用實例:
實例1:搜索etc目錄下所有以sh開頭的文件
[root@CentOS7 ~#]locate /etc/sh
/etc/shadow
/etc/shadow-
/etc/shells
[root@centos7 ~#]locate -r "/etc/\<sh" # 正則,錨定詞首
/etc/shadow
/etc/shadow-
/etc/shells
[root@centos7 ~#]
實例2:忽略大小寫
[root@centos7 ~#]locate -i ~/d
/root/Desktop/root/Documents/root/Downloads
/root/d1
/root/dd
/var/lib/pcp/pmdas/root/domain.h
[root@centos7 ~#]
實例3:更新數據庫
[root@centos7 ~#]locate ~/a
/root/anaconda-ks.cfg
[root@centos7 ~#]updatedb
[root@centos7 ~#]locate ~/a
/root/a.sh
/root/anaconda-ks.cfg
[root@centos7 ~#]
1.2 find
1.2.1 主要用途
find命令是一個實時查找工具,通過遍歷指定路徑而完成對文件的查找;在使用該命令時,如果不選定參數,則在當前目錄下查找子目錄與文件並顯示之;另外,任何位於參數之前的字符串,都將視為欲查找的目錄名。由於是實時遍歷查找,find有如下特性:精確實時查找,速度慢可能只搜索用戶具備讀取和執行權限的目錄。
1.2.2 find語法:
find [OPTION]... [查找路徑] [查找條件] [處理動作]
查找路徑:指定具體目標路徑,默認為當前目錄
查找條件:指定的查找標准,可以是文件名、大小、類型、權限等標准進行;默認為找出指定路徑下的所有文件
處理動作:對符合條件的文件做操作,默認輸出至屏幕
1.2.3 查找條件
1. 根據文件名和inode查找
2. 根據屬主、屬組查找
3. 根據文件類型查找
4. 根據邏輯組合條件查找
5. 根據文件大小來查找
6. 根據時間戳來查找
7. 根據權限來查找
1.2.4 處理動作
1. -print: 默認動作,顯示至屏幕
2. -ls: 類似於對查找到的文件執行 ls -l 命令
3. -delete: 刪除查找到的文件
4. -fls file: 查找到的所有長格式的信息保存至指定文件中
5. -ok COMMMAND {} \; 對查找到的每個文件執行由COMMAND指定的命令,且都會交互式要求用戶確認
6. -exec COMMAND {} \; 對查找到的每個文件執行由COMMAND指定的命令;
7. {}: 用於引用查找至的文件名稱自身
8. find 傳遞查找到的文件至后面指定的命令時,查找到所有符號條件的文件一次性傳遞給后面的命令
9. 有些命令不能接受過多的參數,此時命令執行可能會失敗,用 xargs 來規避此問題
find |xargs COMMAND
1.2.5 常用參數
1.2.5.1 文件名和inode類:
-name "文件名稱": 支持使用glob, *, ?, [], [^]
-iname "文件名稱": 不區分字母大小寫
-inum n: 按inode號查找
-somefile name: 相同的inode號文件
-links n: 鏈接數為n的文件
-regex "PATTERN": 以PATTERN匹配整個文件路徑字符串,而不僅僅是文件名稱
1.2.5.2 屬主屬組類:
-user USERNAME: 查找屬主為指定用戶(UID)的文件
-group GROUPNAME: 查找屬組為指定組(GID)的文件
-uid UserID: 查找屬主為指定的UID號的文件
-gid GroupID: 查找屬組為指定的GID號的文件
-nouser: 查找沒有屬主的文件
-nogroup: 查找沒有屬組的文件
1.2.5.3 文件類型類:
b block (buffered) special
c character (unbuffered) special
d directory
p named pipe (FIFO)f regular file
l symbolic link
s socket
1.2.5.4 邏輯組合條件類:
組合條件:
與:-a
或:-o
非:-not, !
摩根定律:
(非P) 或(非Q) = 非(P且Q)
(非P) 且 (非Q) = 非(P或Q)
1.2.5.5 文件大小類:
-size [+|-]#UNIT
常用單位:k,M,G
#UNIT: (#-1,#]
如:5M 表示 (4M,5M]
-#UNIT: [0,#-1]
如:-5M 表示 [0,5M]
+#UNIT: (#,oo)
如:+5M 表示 (6M,oo)
關於文件大小類的解釋:為什么-size 5M 還是找精確的5M而是表示(4M,5M], 試想文件的大小指什么?是指文件數據的大小還是包括了元數據后的大小,那你找元數據的大小有意義嗎?但文件的大小肯定是包含元數據大小的,而我們一般以文件大小找文件時往往考慮的是文件數據的大小;另外,精確查找一定大小的文件意義不大;所以這里的大小會有1個單位的浮動。
1.2.5.6 時間戳類:
以”天”為單位:
-atime [+|-]#
#: [#,#+1)
+#: [#+1,oo)
-#: [0,#)
-mtime
-ctime
以“分鍾”為單位:
-amin
-mmin
-cmin
關於時間戳類的解釋:為什么-atime 3 表示的是 [3,4),這個就很好解釋了,我們這兒所說的時間是指時間段而非時刻,一“天”與一“分鍾”都是指一個時間段,只有[3,4)這個半閉半開的區間才能完整地表示第三天。
1.2.5.7 權限類:
-perm [/|-]MODE
MODE: 精確匹配權限
/MODE: 任何一類(u,g,o)對象的權限中只要能一位匹配即可,屬於或關系。以前用'+',CentOS 7以'/'替代之
-MODE: 每一類對象都必須同時擁有指定權限,屬於與關系
0:表示不關注
示例:
find -perm 644 表示要嚴格匹配644的文件
find -perm +222 表示u,g,o任何一類用戶有寫權限即匹配
find -perm -222 表示僅嚴格匹配寫權限,即每個用戶必須要有寫權限
find -perm -002 表示僅嚴格匹配other用戶的寫權限
1.2.6 使用示例:
實例1:將配置文件備份到指定目錄下並添加擴展名.org
[root@localhost ~]# find . -name "*.conf" -exec cp -r {} /testdir/{}.org \;
[root@localhost ~]# cd /testdir/
[root@localhost testdir]# ls
a.conf.org b.conf.org
[root@localhost testdir]#
實例2:.提示刪除存在時間超過3天以上的屬主為young的臨時文件
[root@localhost ~]# find /tmp -ctime +3 -user young -exec rm -fr {} \;
[root@localhost ~]#
實例3:在主目錄中查找可被其它用戶寫入的文件
[root@localhost ~]# find ~ -perm -002
/root/num
[root@localhost ~]# find ~ -perm -002 -exec chmod o-w {} \;
[root@localhost ~]# ll num
--w--w---- 1 root root 35 Jan 21 05:55 num
實例4:查找/var目錄下屬主為root,且屬組為mail的所有文件
[root@localhost ~]# find /var -user root -group mail -ls #默認關系就是與
1179652 4 drwxrwxr-x 2 root mail 4096 Jan 23 11:04 /var/spool/mail
實例5:查找/var目錄下不屬於root、lp、gdm的所有文件
[root@localhost ~]# find /var ! -user root ! -user lp ! -user gdm
實例6:查找/var目錄下最近一周內其內容修改過,同時屬主不為root,也不是postfix的文件
[root@localhost ~]# find /var/ -mtime -7 ! -user root ! -user postfix -ls
1179676 4 drwx------ 3 daemon daemon 4096 Jan 23 11:04 /var/spool/at
524399 4 drwx------ 2 nginx nginx 4096 Jan 23 03:16 /var/log/nginx
524413 0 -rw-r--r-- 1 nginx root 0 Jan 23 03:16 /var/log/nginx/access.log
524391 0 -rw-r--r-- 1 nginx root 0 Jan 21 03:44 /var/log/nginx/error.log
132174 4 drwx------ 3 nginx nginx 4096 Jan 21 03:44 /var/lib/nginx
132175 4 drwx------ 7 nginx nginx 4096 Jan 21 03:44 /var/lib/nginx/tmp
132173 4 drwx------ 2 nginx root 4096 Jan 21 03:44 /var/lib/nginx/tmp/client_body
132219 4 drwx------ 2 nginx root 4096 Jan 21 03:44 /var/lib/nginx/tmp/proxy
132221 4 drwx------ 2 nginx root 4096 Jan 21 03:44 /var/lib/nginx/tmp/uwsgi
132222 4 drwx------ 2 nginx root 4096 Jan 21 03:44 /var/lib/nginx/tmp/scgi
132220 4 drwx------ 2 nginx root 4096 Jan 21 03:44 /var/lib/nginx/tmp/fastcgi
實例7:查找當前系統上沒有屬主或屬組,且最近一個周內曾被訪問過的文件
[root@bash ~]# find / -nouser -o -nogroup -a -atime -7
實例8:查找/etc目錄下大於1M且類型為普通文件的所有文件
[root@bash ~]# find /etc/ -size +1M -type f
/etc/selinux/targeted/policy/policy.29
/etc/udev/hwdb.bin
實例9:查找/etc目錄下所有用戶都沒有寫權限的文件
[root@bash ~]# find /etc/ ! -perm /222
/etc/pki/ca-trust/extracted/java/cacerts
/etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt
/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
/etc/pki/ca-trust/extracted/pem/email-ca-bundle.pem
/etc/pki/ca-trust/extracted/pem/objsign-ca-bundle.pem
/etc/lvm/profile/cache-mq.profile
/etc/lvm/profile/cache-smq.profile
/etc/lvm/profile/command_profile_template.profile
/etc/lvm/profile/metadata_profile_template.profile
/etc/lvm/profile/thin-generic.profile
/etc/lvm/profile/thin-performance.profile
/etc/openldap/certs/password
/etc/gshadow
/etc/dbus-1/system.d/cups.conf
/etc/shadow
/etc/gshadow-
/etc/ld.so.conf.d/kernel-3.10.0-327.el7.x86_64.conf
/etc/shadow-
/etc/udev/hwdb.bin
/etc/machine-id
/etc/pam.d/cups
/etc/sudoers
實例10:查找/etc目錄下至少有一類用戶沒有執行權限的文件
[root@bash ~]# find /etc/ ! -perm -111 # 至少有一類用戶沒有就是所有用戶都沒有
實例11:.查找/etc/init.d目錄下,所有用戶都有執行權限,且其它用戶有寫權限的文件
[root@bash ~]# find /etc/init.d -perm -113
/etc/init.d
或者
[root@bash ~]# find /etc/init.d -perm -111 -perm -002
/etc/init.d
實例12:摩根定律找出/tmp目錄下,屬主不是root,且文件名不以f開頭的文件
[root@centos7 ~]#find /tmp \( -not -user root -a -not -name 'f*' \) -ls
即
[root@centos7 ~]#find /tmp -not \( -user root -o -name 'f*' \) -ls
實例13:查找/etc/下,除/etc/sane.d目錄的其它所有.conf后綴的文件
[root@bash ~]# find /etc -path '/etc/sane.d' -prune -o -name '*.conf'
實例14:匹配文件路徑或文件
[root@bash ~]# find /usr/ -path '*local'
/usr/bin/abrt-action-analyze-ccpp-local
/usr/share/doc/postfix-2.10.1/examples/qmail-local
/usr/share/aclocal
/usr/libexec/postfix/local
/usr/local
實例15:基於正則表達式匹配文件路徑
[root@bash ~]# find . -regex ".*txt$"
./.mozilla/firefox/4dqu966q.default/revocations.txt
./vimrc/spf13-vim/LICENSE.txt
./a.txt
1.3 which
1.3.1 命令功能:
which指令會在PATH變量指定的路徑中,搜索某個系統命令的位置,並且返回第一個搜索結果。
1.3.2 命令格式:
which 可執行文件名稱
1.3.3 命令參數:
-n 指定文件名長度,指定的長度必須大於或等於所有文件中最長的文件名。
-p 與-n參數相同,但此處的包括了文件的路徑。
-w 指定輸出時欄位的寬度。
-V 顯示版本信息
1.3.4 使用實例:
實例1:查找文件、顯示命令路徑
命令:
which lsmod
輸出:
[root@localhost ~]# which pwd
/bin/pwd
[root@localhost ~]# which adduser
/usr/sbin/adduser
[root@localhost ~]#
說明:
which 是根據使用者所配置的 PATH 變量內的目錄去搜尋可運行檔的!所以,不同的 PATH 配置內容所找到的命令當然不一樣的!
實例2:用 which 去找出 which
命令:
which which
輸出:
[root@localhost ~]# which which
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
/usr/bin/which
[root@localhost ~]#
說明:
竟然會有兩個 which ,其中一個是 alias 這就是所謂的『命令別名』,意思是輸入 which 會等於后面接的那串命令!
二.文件打包與壓縮
常用打包壓縮格式
.zip .gz .bz2 .tar .tar.gz .tar.bz2
2.1 .zip
格式
1.壓縮
壓縮文件
zip 壓縮文件名 源文件
壓縮目錄
zip -r 壓縮文件名 源目錄
- 實例
[vagrant/tmp] ]$zip a.zip a.md
adding: a.md (stored 0%)
[vagrant/tmp] ]$zip -r abc.zip abc
adding: abc/ (stored 0%)
adding: abc/def/ (stored 0%)
adding: abc/def/ghi/ (stored 0%)
[vagrant/tmp] ]$ll
drwxrwxr-x 3 vagrant vagrant 4.0K Apr 19 00:53 abc/
-rw-rw-r-- 1 vagrant vagrant 454 Apr 19 00:55 abc.zip
-rw-rw-r-- 1 vagrant vagrant 0 Apr 19 00:53 a.md
-rw-rw-r-- 1 vagrant vagrant 158 Apr 19 00:55 a.zip
2. 解壓縮
unzip 壓縮文件名 [-d <文件解壓縮后所要存儲的目錄>]
- 實例
[vagrant/tmp] ]$mkdir zip
[vagrant/tmp] ]$unzip a.zip -d zip
Archive: a.zip
extracting: zip/a.md
[vagrant/tmp] ]$unzip abc.zip -d zip
Archive: abc.zip
creating: zip/abc/
creating: zip/abc/def/
creating: zip/abc/def/ghi/
[vagrant/tmp] ]$ll zip
drwxrwxr-x 3 vagrant vagrant 4.0K Apr 19 00:53 abc/
-rw-rw-r-- 1 vagrant vagrant 0 Apr 19 00:53 a.md
2.2 .gz
格式
1. 壓縮
壓縮文件
gzip 源文件
注意:源文件會消失!
gzip -c 源文件 > 壓縮文件
壓縮文件,源文件保留
gzip -r 目錄
壓縮目錄下所有子文件,但是不能壓縮目錄
壓縮目錄
gzip 不能壓縮目錄
- 實例
[vagrant/tmp] ]$gzip -c a.md > a.md.gz
[vagrant/tmp] ]$ll
drwxrwxr-x 3 vagrant vagrant 4.0K Apr 19 00:53 abc/
-rw-rw-r-- 1 vagrant vagrant 0 Apr 19 00:53 a.md
-rw-rw-r-- 1 vagrant vagrant 25 Apr 19 04:11 a.md.gz
[vagrant/tmp] ]$ll abc
-rw-rw-r-- 1 vagrant vagrant 0 Apr 19 04:12 a
-rw-rw-r-- 1 vagrant vagrant 0 Apr 19 04:12 b
-rw-rw-r-- 1 vagrant vagrant 0 Apr 19 04:12 c
[vagrant/tmp] ]$gzip -r abc
[vagrant/tmp] ]$ll abc
-rw-rw-r-- 1 vagrant vagrant 22 Apr 19 04:12 a.gz
-rw-rw-r-- 1 vagrant vagrant 22 Apr 19 04:12 b.gz
-rw-rw-r-- 1 vagrant vagrant 22 Apr 19 04:12 c.gz
2. 解壓縮
gzip -d 壓縮文件
gunzip 壓縮文件
- 實例
[vagrant/tmp/tmp] ]$gzip -d a.md.gz
[vagrant/tmp/tmp] ]$ll
drwxrwxr-x 3 vagrant vagrant 4.0K Apr 19 04:13 abc/
-rw-rw-r-- 1 vagrant vagrant 0 Apr 19 04:11 a.md
[vagrant/tmp/tmp] ]$gzip -dr abc/
[vagrant/tmp/tmp] ]$ll abc
-rw-rw-r-- 1 vagrant vagrant 0 Apr 19 04:12 a
-rw-rw-r-- 1 vagrant vagrant 0 Apr 19 04:12 b
-rw-rw-r-- 1 vagrant vagrant 0 Apr 19 04:12 c
2.3 .bz2
格式
1. 壓縮
壓縮文件
1. bzip2 源文件
注意:源文件會消失!
2. bzip2 -k 源文件
壓縮文件,源文件保留
壓縮目錄
bzip2 不能壓縮目錄
- 實例
[vagrant/tmp/tmp] ]$bzip2 -k a.md
[vagrant/tmp/tmp] ]$ll
-rw-rw-r-- 1 vagrant vagrant 0 Apr 19 04:11 a.md
-rw-rw-r-- 1 vagrant vagrant 14 Apr 19 04:11 a.md.bz2
[vagrant/tmp/tmp] ]$rm a.md.bz2
[vagrant/tmp/tmp] ]$bzip2 a.md
[vagrant/tmp/tmp] ]$ll
-rw-rw-r-- 1 vagrant vagrant 14 Apr 19 04:11 a.md.bz2
2. 解壓縮
bzip2 -d 壓縮文件
解壓縮,默認不保留壓縮文件。加
-k
可保留壓縮文件
gunzip 壓縮文件
解壓縮,默認不保留壓縮文件。加
-k
可保留壓縮文件
- 實例
[vagrant/tmp/tmp] ]$bzip2 -dk a.md.bz2
[vagrant/tmp/tmp] ]$ll
-rw-rw-r-- 1 vagrant vagrant 0 Apr 19 04:11 a.md
-rw-rw-r-- 1 vagrant vagrant 14 Apr 19 04:11 a.md.bz2
[vagrant/tmp/tmp] ]$rm a.md
[vagrant/tmp/tmp] ]$bunzip2 -k a.md.bz2
[vagrant/tmp/tmp] ]$ll
-rw-rw-r-- 1 vagrant vagrant 0 Apr 19 04:11 a.md
-rw-rw-r-- 1 vagrant vagrant 14 Apr 19 04:11 a.md.bz2
[vagrant/tmp/tmp] ]$rm a.md
[vagrant/tmp/tmp] ]$bzip2 -d a.md.bz2
[vagrant/tmp/tmp] ]$ll
-rw-rw-r-- 1 vagrant vagrant 0 Apr 19 04:11 a.md
2.4 .tar
格式
1. 打包
tar -cvf 打包文件名 源文件或目錄
- 選項
-c
: 打包
-v
: 顯示打包過程
-f
: 指定打包后的文件名
- 實例
[vagrant/tmp/tmp] ]$tar -cvf abc.tar abc
abc/
abc/def/
abc/def/ghi/
abc/a
abc/b
abc/c
[vagrant/tmp/tmp] ]$ll
drwxrwxr-x 3 vagrant vagrant 4.0K Apr 19 04:22 abc/
-rw-rw-r-- 1 vagrant vagrant 10K Apr 19 07:02 abc.tar
2. 解打包
tar -xvf 打包文件名
- 選項
-x
: 解打包
- 實例
vagrant/tmp/tmp] ]$tar -xvf abc.tar
abc/
abc/def/
abc/def/ghi/
abc/a
abc/b
abc/c
[vagrant/tmp/tmp] ]$ll
drwxrwxr-x 3 vagrant vagrant 4.0K Apr 19 04:22 abc/
-rw-rw-r-- 1 vagrant vagrant 10K Apr 19 07:02 abc.tar
2.5 .tar.gz
格式
其實,
.tar.gz
格式是先將文件或目錄打包文.tar
格式,再壓縮為.gz
格式
1. 壓縮
tar -zcvf 壓縮包名.tar.gz 源文件
- 選項
-z
: 壓縮為 .tar.gz 格式
2. 解壓縮
tar -zxvf 壓縮包名.tar.gz
- 選項
-x
: 解壓縮
-t
: 查看壓縮保內文件,但是不解壓縮
- 實例
[vagrant/tmp/tmp] ]$tar -zcvf abc.tar.gz abc
abc/
abc/def/
abc/def/ghi/
abc/a
abc/b
abc/c
[vagrant/tmp/tmp] ]$ll
total 8.0K
drwxrwxr-x 3 vagrant vagrant 4.0K Apr 19 04:22 abc/
-rw-rw-r-- 1 vagrant vagrant 204 Apr 19 07:27 abc.tar.gz
[vagrant/tmp/tmp] ]$rm -rf abc
[vagrant/tmp/tmp] ]$tar -ztvf abc.tar.gz
drwxrwxr-x vagrant/vagrant 0 2018-04-19 04:22 abc/
drwxrwxr-x vagrant/vagrant 0 2018-04-19 00:52 abc/def/
drwxrwxr-x vagrant/vagrant 0 2018-04-19 00:52 abc/def/ghi/
-rw-rw-r-- vagrant/vagrant 0 2018-04-19 04:12 abc/a
-rw-rw-r-- vagrant/vagrant 0 2018-04-19 04:12 abc/b
-rw-rw-r-- vagrant/vagrant 0 2018-04-19 04:12 abc/c
[vagrant/tmp/tmp] ]$ll
total 4.0K
-rw-rw-r-- 1 vagrant vagrant 204 Apr 19 07:27 abc.tar.gz
[vagrant/tmp/tmp] ]$tar -zxvf abc.tar.gz
abc/
abc/def/
abc/def/ghi/
abc/a
abc/b
abc/c
[vagrant/tmp/tmp] ]$ll
total 8.0K
drwxrwxr-x 3 vagrant vagrant 4.0K Apr 19 04:22 abc/
-rw-rw-r-- 1 vagrant vagrant 204 Apr 19 07:27 abc.tar.gz
2.6 .tar.bz2
格式
其實,
.tar.bz2
格式是先將文件或目錄打包文.tar
格式,再壓縮為.bz2
格式
1. 壓縮
tar -jcvf 壓縮包名.tar.bz2 源文件
- 選項
-j
: 壓縮為 .tar.bz2 格式
2. 解壓縮
tar -jxvf 壓縮包名.tar.bz2
- 選項
-x
: 解壓
-t
: 查看壓縮保內文件,但是不解壓縮
-C
: 指定解壓的目錄(注意,該選項必須放在后面)
- 實例
[vagrant/tmp/tmp] ]$tar -jcvf abc.tar.bz2 abc
abc/
abc/def/
abc/def/ghi/
abc/a
abc/b
abc/c
[vagrant/tmp/tmp] ]$ll
total 8.0K
drwxrwxr-x 3 vagrant vagrant 4.0K Apr 19 04:22 abc/
-rw-rw-r-- 1 vagrant vagrant 210 Apr 19 07:33 abc.tar.bz2
[vagrant/tmp/tmp] ]$tar -jtvf abc.tar.bz2
drwxrwxr-x vagrant/vagrant 0 2018-04-19 04:22 abc/
drwxrwxr-x vagrant/vagrant 0 2018-04-19 00:52 abc/def/
drwxrwxr-x vagrant/vagrant 0 2018-04-19 00:52 abc/def/ghi/
-rw-rw-r-- vagrant/vagrant 0 2018-04-19 04:12 abc/a
-rw-rw-r-- vagrant/vagrant 0 2018-04-19 04:12 abc/b
-rw-rw-r-- vagrant/vagrant 0 2018-04-19 04:12 abc/c
[vagrant/tmp/tmp] ]$tar -jxvf abc.tar.bz2 -C /tmp
abc/
abc/def/
abc/def/ghi/
abc/a
abc/b
abc/c
[vagrant/tmp/tmp] ]$ll /tmp/
drwxrwxr-x 3 vagrant vagrant 4.0K Apr 19 04:22 abc/
drwxrwxr-x 3 vagrant vagrant 4.0K Apr 19 07:33 tmp/