Gzip
使用 gzip 壓縮目錄中的文件,除了已經存在的 .gz 文件
我有一個日誌目錄,我想設置一個使用gzip壓縮的作業。問題是我不想重新壓縮已經壓縮的日誌。
我嘗試使用
ls | grep -v gz | gzip
,但這似乎不起作用。有沒有辦法做到這一點?基本上我想壓縮目錄中不以.gz結尾的每個文件。
你可以這樣做:
gzip *
gzip 會告訴你它會跳過已經有
.gz
結尾的文件。如果該消息妨礙您使用:
gzip -q *
您嘗試的方法不起作用,因為
gzip
沒有從標準輸入讀取要壓縮的文件的文件名,為此您必須使用:ls | grep -v gz | xargs gzip
您將
gz
在文件名中的任何位置排除具有該模式的文件,而不僅僅是在末尾。¹您還必須注意,ls
當您的文件名包含空格、換行符等時,解析輸出是危險的。一個更乾淨的解決方案,不依賴於
gzip
跳過帶有.gz
結尾的文件,它還處理子目錄中的非壓縮文件:find . -type f ! -name "*.gz" -exec gzip {} \;
¹正如
izkata
評論:.gz
單獨使用來改善這一點,是行不通的。您將需要使用grep -vF .gz
orgrep -v '\.gz$'
。這仍然存在處理ls
輸出的危險