linux 如何針對同資料夾底下且為 20250627開頭的資料夾底下的 .jpg .csv 壓縮成同一個壓縮檔
你可以使用 find
搭配 tar
或 zip
指令,將 當前資料夾下所有以 20250627
開頭的資料夾中的 .jpg
與 .csv
檔案,一起壓縮成一個壓縮檔。
以下是幾種方法:
✅ 方法一:使用 find
+ tar
(推薦,支援中文路徑)
find ./20250627*/ -type f \( -iname "*.jpg" -o -iname "*.csv" \) -print0 | tar --null -czvf output.tar.gz --files-from=-
解說:
-
20250627*/
:抓取所有以20250627
開頭的資料夾 -
-type f
:只找檔案 -
\( -iname "*.jpg" -o -iname "*.csv" \)
:找.jpg
或.csv
(不分大小寫) -
-print0
+--null
:支援含空格或中文的檔名 -
tar -czvf
:建立 gzip 壓縮的 tar 檔output.tar.gz
✅ 方法二:使用 zip
find ./20250627*/ -type f \( -iname "*.jpg" -o -iname "*.csv" \) -print | zip output.zip -@
解說:
-
-@
代表從 stdin 接收檔案列表 -
zip
不像tar
支援-print0
,中文檔案或空白有可能失敗(依系統設定)
如果你希望壓縮後的結構保留完整路徑:
以上指令都會保留原始資料夾結構(例如 20250627abc/image.jpg
會被保留在壓縮內)
加碼:如果只壓縮檔案、不保留資料夾結構?
可改為先複製到暫存資料夾,再壓縮,例如:
mkdir tmp_compress find ./20250627*/ -type f \( -iname "*.jpg" -o -iname "*.csv" \) -exec cp --parents {} tmp_compress/ \; cd tmp_compress tar -czvf ../output.tar.gz ./ cd .. rm -r tmp_compress
留言板
歡迎留下建議與分享!希望一起交流!感恩!