
我在一個目錄中有三種文件,例如。,.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 ^*.*