如何壓縮目錄中特定類型的文件

如何壓縮目錄中特定類型的文件

我在一個目錄中有三種文件,例如,.csv以及沒有副檔名的檔案。

例子

test
nest
prod
test.csv
prod.txt
nest.csv

我想壓縮沒有擴展名的檔案並將該 zip 移動到另一個目錄。請幫我解決這個問題

答案1

使用柏油公用事業:

tar -cvf noext.zip --exclude=*.* * && mv noext.zip path/to/dest_dir

  • -c- 建立一個新的存檔

  • --exclude=*.*- 排除文件基於圖案

  • mv noext.zip path/to/dest_dir- 將已建立的檔案移至目的地目錄

答案2

您可以在具有符合包含點字元的名稱的全域模式的欄位find上使用反轉條件,如下所示-name

find . -type f ! -name "*.*" -exec zip filename.zip "{}" + 
[ -f filename.zip ] && mv filename.zip /to_whatever_path_needed/

表達式取得所有文件不是他們的名字中包含一個.字符,並將其一次性傳遞給 zip 以創建.zip存檔。

您可能必須添加深度選項,find就好像-mindepth 1 -maxdepth 1您想找到文件一樣僅有的在您目前的目錄中。

答案3

以克什為單位:

zip /another/directory/files_without_extension.zip !(*.*)

在 bash 中,運行shopt -s extglob上面的命令。在 zsh 中,運行setopt ksh_glob上面的命令,或者

setopt extended_glob
zip /another/directory/files_without_extension.zip ^*.*

相關內容