![Bash 脚本用于将文件夹 tar 保存为基本路径](https://linux22.com/image/852010/Bash%20%E8%84%9A%E6%9C%AC%E7%94%A8%E4%BA%8E%E5%B0%86%E6%96%87%E4%BB%B6%E5%A4%B9%20tar%20%E4%BF%9D%E5%AD%98%E4%B8%BA%E5%9F%BA%E6%9C%AC%E8%B7%AF%E5%BE%84.png)
我的脚本将我的 /home/user 目录中的文件夹压缩,并将其全部保存在备份文件夹中。但是,当我打开每个 tar.gz 时,它们都包含目录 /home/user,然后是我想要压缩的文件夹和文件。
我的脚本:
#!/bin/bash
if [ ! -d ~/backup ]; then
mkdir ~/backup
fi
for i in `ls ~/folder`; do
echo "~/folder/$i"
if [ -d ~/folder/$i ]; then
tar -zcf ~/backup/$i.tar.gz ~/folder/$i
fi
done
我该怎么做才能防止 /home/user 被保存?
答案1
你必须进入该文件夹。例如:
#!/bin/bash
if [ ! -d ~/backup ]; then
mkdir ~/backup
fi
cd ~/folder
for i in *; do
echo "~/folder/$i"
if [ -d "$i" ]; then
tar -zcf ~/backup/"$i".tar.gz "$i"
fi
done
此外,当这些变量引用文件名时最好使用引号。