Linux 删除bash脚本中的tar.gz文件
我当前正试图从另一个目录中删除最旧的目录备份。这些备份使用“tar-cpPzvf”进行压缩。我的简单问题是,是否有办法使用xargs和“rm”命令删除tar.gz文件 这是我目前使用的线路:Linux 删除bash脚本中的tar.gz文件,linux,bash,unix,Linux,Bash,Unix,我当前正试图从另一个目录中删除最旧的目录备份。这些备份使用“tar-cpPzvf”进行压缩。我的简单问题是,是否有办法使用xargs和“rm”命令删除tar.gz文件 这是我目前使用的线路: sudo ls -t $BACKUPTARGET/adhoc/daily | tail -n +$NUMDAILY | xargs rm 使用的变量定义为: $BACKUPTARGET:指向“/backup” $NUMDAILY:此值从指定要保留的备份数量的不同配置文件中剪切而来 当我运行脚本时,会列
sudo ls -t $BACKUPTARGET/adhoc/daily | tail -n +$NUMDAILY | xargs rm
使用的变量定义为:
:指向“/backup”$BACKUPTARGET
:此值从指定要保留的备份数量的不同配置文件中剪切而来$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文件,可能无法删除它们,但我很好奇是否有办法让我的脚本不那么复杂。我认为最简单的更改就是更改您的工作目录:
sudo ls -t $BACKUPTARGET/adhoc/daily | tail -n +$NUMDAILY | \
( cd $BACKUPTARGET/adhoc/daily && xargs rm ; )
这应该行得通
您向我展示的这个命令似乎工作正常,但没有留下正确的备份量。由于$NUMDAILY=2,它似乎每次只留下一个,而它应该留下两个
tail-n+2
输出从第二行开始的行;要留下两个,你必须从第三个开始,e。g、 :
rm `ls -t $BACKUPTARGET/adhoc/daily/*|tail -n+$((NUMDAILY+1))`
旁白:您是否意识到在脚本中,
rm
将作为运行此命令的用户运行,而不一定是root
?按照您的方式,只有ls
以root身份运行。另外:“如果不解压缩,可能无法删除.tar.gz文件”-poppycock!当然你可以删除它们。它们是非常普通的文件。我不知道有人可以删除这些tar文件。说到bash,我是个初学者。您向我展示的这个命令似乎工作正常,但没有留下正确的备份量。由于$NUMDAILY=2,它似乎每次只留下一个,而它应该留下两个。我还有一个if语句,它仅在文件数大于要保留的每日备份数时处理上述行。
… tail -n +$NUMDAILY …
rm `ls -t $BACKUPTARGET/adhoc/daily/*|tail -n+$((NUMDAILY+1))`