我想将muliply 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 | gzippipe道。 它不是一个简单的二进制文件,它是一个二进制文件的链,并且启动一个这样的东西,你需要一些东西,它可以处理pipe道。
最好的事情是一个壳。 你必须调用一个shell来调用这个pipe道:
find . -name "*.bz2" -type f -exec bash -e 'bunzip2 -c {} | gzip > ${1%.bz2}.gz'
(我没有testing过,可能会出现一些语法问题,请看这个模板。)