我正在尝试为folder文件夹中的每个目录创建一个脚本,只n压缩最新的文件。
但是,我在处理多个单词文件时遇到了问题。我需要一种方法将它们用引号括起来,以便tar命令知道每个文件是哪一个。
到目前为止,这是我的脚本:
#!/bin/bash
if [ ! -d ~/backup ]; then
mkdir ~/backup
fi
cd ~/folder
for i in *; do
if [ -d "$i" ]; then
original=`pwd`
cd $i
echo tar zcf ~/backup/"$i".tar.gz "`ls -t | head -10`"
cd $original
fi
done
echo "Backup copied in $HOME/backup/"
exit 0
Run Code Online (Sandbox Code Playgroud)
小智 6
xargs来救援!一种方法是使用 xargs 创建参数列表,但将每个文件放在引号内:
echo `ls -t1 | head -10 | xargs -I'{}' echo \"{}\"`
Run Code Online (Sandbox Code Playgroud)
xargs用于直接tar在追加模式 ( -r) 中调用然后在最后压缩它的其他选项(您不能在追加模式下创建压缩档案):
ls -t | head -10 | xargs -I'{}' tar -rvf ~/backup/"$i".tar '{}'
gzip ~/backup/"$i".tar
Run Code Online (Sandbox Code Playgroud)
第二种方法的优点是您可以更改10为任何其他数字,即使是非常高的数字,它仍然可以工作,而不会获得太长的参数列表。
| 归档时间: |
|
| 查看次数: |
1917 次 |
| 最近记录: |