linux 壓縮當前資料夾下所有檔案

2021-09-28 23:07:22 字數 2804 閱讀 9463

linux zip壓縮。壓縮當前資料夾下所有檔案,壓縮為a.zip。命令列的方法是怎樣。

zip  -r filename.zip  資料夾名

tar命令可以用來壓縮打包單檔案、多個檔案、單個目錄、多個目錄。

常用格式:

單個檔案壓縮打包 tar czvf my.tar file1

多個檔案壓縮打包 tar czvf my.tar file1 file2,...

單個目錄壓縮打包 tar czvf my.tar dir1

多個目錄壓縮打包 tar czvf my.tar dir1 dir2

解包至當前目錄:tar xzvf my.tar

含子目錄find x* | cpio -o > /y/z.cpio

不含子目錄ls x* | cpio -o > /y/z.cpio

解包: cpio -i < /y/z.cpio

[root@linux ~]# tar [-cxtzjvfppn] 檔案與目錄 ....

引數:-c :建立乙個壓縮檔案的引數指令(create 的意思);

-x :解開乙個壓縮檔案的引數指令!

-t :檢視 tarfile 裡面的檔案!

特別注意,在引數的下達中, c/x/t 僅能存在乙個!不可同時存在!

因為不可能同時壓縮與解壓縮。

-z :是否同時具有 gzip 的屬性?亦即是否需要用 gzip 壓縮?

-j :是否同時具有 bzip2 的屬性?亦即是否需要用 bzip2 壓縮?

-v :壓縮的過程中顯示檔案!這個常用,但不建議用在背景執行過程!

-f :使用檔名,請留意,在 f 之後要立即接檔名喔!不要再加引數!

例如使用『 tar -zcvfp tfile sfile』就是錯誤的寫法,要寫成

『 tar -zcvpf tfile sfile』才對喔!

-p :使用原檔案的原來屬性(屬性不會依據使用者而變)

-p :可以使用絕對路徑來壓縮!

-n :比後面接的日期(yyyy/mm/dd)還要新的才會被打包進新建的檔案中!

--exclude file:在壓縮的過程中,不要將 file 打包!

[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』那是關於絕對路徑的特殊設定。 

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

# 由於我們使用 gzip 壓縮,所以要查閱該 tar file 內的檔案時,

# 就得要加上 z 這個引數了!這很重要的!

[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/ 可能會有所不同喔!

[root@linux ~]# cd /tmp

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

# 我可以透過 tar -ztvf 來查閱 tarfile 內的檔名稱,如果單只要乙個檔案,

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

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

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

[root@linux ~]# tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc

[root@linux ~]# cd /tmp

[root@linux tmp]# tar -cvf - /etc | tar -xvf -mak

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

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

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

# 這部分我們會在 bash shell 時,再次提到這個指令跟大家再解釋囉!

利用python 獲取當前資料夾下所有檔名

這裡通過os下的兩個函式實現,os.walk 和os.listdir import os def file name file dir for root,dirs,files in os.walk file dir print root 當前目錄路徑 print dirs 當前路徑下所有子目錄 pr...

python如何獲取當前資料夾下所有檔名詳解

前言 os 模組下有兩個函式 os.walk os.listdir 示例 coding utf 8 iwww.cppcns.commport os def file name file dir for rootwldiiulep,dirs,files in os.walwww.cppcns.comk...

Python 獲取當前資料夾下所有檔名

from os 模組下有兩個函式 os.walk os.listdir coding utf 8 23 import os 45 deffile name file dir 6for root,dirs,files in os.walk file dir 7print root 當前目錄路徑 8pr...