Bash
BASH:使用 find 將 bz2 轉換為 gzip
我想將多重
bzip2
文件轉換為gzip
格式。我做到了這一點,foor loop
但我想這樣做find
:BASH for 循環:
for i in $(ls -1 *.bz2); do echo "Converting: $i to ${i%.bz2}.gz"; { bunzip2 -c $i | gzip > ${i%.bz2}.gz; }; done
我嘗試了類似的方法,但它不起作用:
find . -name "*.bz2" -type f -exec bunzip2 -c {} | gzip > ${1%.bz2}.gz \;
這不是那麼簡單。Find 只能呼叫帶有“exec”參數的二進製文件,但您現在嘗試呼叫 bunzip|gzip 管道。它不是一個簡單的二進製文件,它是一個二進製文件鏈,要啟動這樣的東西,你需要一些可以處理管道的東西。
最好的東西是外殼。你必須呼叫一個 shell 來呼叫這個管道:
find . -name "*.bz2" -type f -exec bash -e 'bunzip2 -c {} | gzip > ${1%.bz2}.gz'
(我沒有測試它,可能會出現一些語法問題,請將此視為模板。)