用于gzip特定文件扩展名的Bash脚本

时间:2018-06-04 23:39:31

标签: bash for-loop gzip

我获得了一个脚本,可以找到所有html文件并将它们单独压缩到新位置

#!/bin/bash
for i in .html; do
gzip < $i > /backup/full/$i
done

我不确定我是否完全理解它是如何工作的,因为它只有在与文件位于同一目录时才起作用。如果由于某种原因脚本位于其他地方会怎么样?

尝试这样的方法来添加文件路径会导致原始路径和目标路径组合并出现错误

for i in /html/directory/*.html; do
gzip < $i > /backup/full/$i
done

感谢您的时间

1 个答案:

答案 0 :(得分:0)

构造输出文件名时需要删除原始目录前缀。

gzip < "$i" > /backup/full/"$(basename "$i").gz"

或使用参数扩展运算符:

gzip < "$i" > /backup/full/"${i##*/}".gz

不要忘记引用您的变量,以便正确处理具有空格的文件名。