我目前正在尝试从其他目录中删除最旧的目录备份。这些备份使用“tar -cpPzvf”进行压缩。我的简单问题是,是否有办法使用xargs和“rm”命令删除tar.gz文件
这是我目前使用的行:
sudo ls -t $BACKUPTARGET/adhoc/daily | tail -n +$NUMDAILY | xargs rm
使用的变量定义为:
$BACKUPTARGET
:指向“/ backup”$NUMDAILY
:此值从不同的配置文件中删除,该文件指定要保留的备份数。当我运行我的脚本时,会列出除指定号码之外的最旧备份,但是我收到此错误:
rm: cannot remove 'david-lenovo.etc.2016-12-07.20-10.tar.gz': No such file or directory
rm: cannot remove 'david-lenovo.etc.2016-12-07.20-09.tar.gz': No such file or directory
rm: cannot remove 'david-lenovo.etc.2016-12-07.20-04.tar.gz': No such file or directory
rm: cannot remove 'david-lenovo.etc.2016-12-07.20-02.tar.gz': No such file or directory
rm: cannot remove 'david-lenovo.etc.2016-12-07.19-54.tar.gz': No such file or directory
rm: cannot remove 'david-lenovo.etc.2016-12-07.19-50.tar.gz': No such file or directory
rm: cannot remove 'david-lenovo.etc.2016-12-07.19-49.tar.gz': No such file or directory
rm: cannot remove 'david-lenovo.etc.2016-12-07.19-48.tar.gz': No such file or directory
我知道可能无法在不首先解压缩tar.gz文件的情况下删除tar.gz文件,但我很好奇是否有办法让我的脚本不那么复杂。
答案 0 :(得分:1)
我能想到的最简单的改变是改变你的工作目录:
sudo ls -t $BACKUPTARGET/adhoc/daily | tail -n +$NUMDAILY | \
( cd $BACKUPTARGET/adhoc/daily && xargs rm ; )
答案 1 :(得分:0)
for single_file in "$(sudo ls -t $BACKUPTARGET/adhoc/daily | tail -n +$NUMDAILY)"
do
rm -rf $single_file
done
这应该有效
答案 2 :(得分:0)
… tail -n +$NUMDAILY …
您向我展示的这个命令似乎工作正常,但它没有留下正确数量的备份。似乎每次只留下一个,因为$ NUMDAILY = 2。
tail -n +2
输出以第2个开头的行;留下两个,你必须从第三个开始,e。 G:
rm `ls -t $BACKUPTARGET/adhoc/daily/*|tail -n+$((NUMDAILY+1))`