我想要做的是将一个目录复制到另一个位置(在 Linux 上),并在目标位置使用 GZip 压缩一些文件(具有特定扩展名),而其他文件则直接复制。这可以通过一行代码高效地实现吗?需要复制大量文件,因此效率越高越好。
答案1
好吧,作为一项学术练习:
set -e # abort on errors
find /source -print | while read object_name; do
if [ -d "$object_name" ]; then
mkdir -p /destination/$object_name
else
if echo "$object_name" | egrep "(txt|html|...)" >/dev/null # extensions you want to compress
cat $object_name | gzip >/destination/${object_name}.gz
else
cp $object_name /destination/$object_name
fi
fi
rm /source/$object_name # could comment this out to preserve the source if you have the space
done