lftp使用Bash删除多个文件

问题描述 投票:1回答:1

我尝试创建一个脚本,该脚本使用lftp删除备份目录上的三个旧文件,但删除所有旧文件。

我尝试用ls -1tr进行此操作,这些人按升序返回所有文件,然后在执行head -$NB_BACKUP_TO_RM($ ​​NB_BACKUP_TO_RM是我要在列表中删除的文件数)之后,这两个命令返回正确的文件。

此后我想删除所有它们,所以我执行xargs rm --,但是Bash返回文件不存在...我认为此命令不是运行到远程目录中,而是运行在本地目录中,而且我不知道该如何删除(返回列表中的)此文件。

这里是完整代码:

MAX_BACKUP=3
NB_BACKUP=$(lftp -e "ls -1tr $REMOTE_DIR/full_backup_ftp* | wc -l ; quit" -u $USER,$PASSWORD $HOST)

if (( $NB_BACKUP > $MAX_BACKUP ))
then
   NB_BACKUP_TO_RM=$(($NB_BACKUP-$MAX_BACKUP))
   REMOVE=$(lftp -e "ls -1tr $REMOTE_DIR/full_backup_ftp* | head -$NB_BACKUP_TO_RM | xargs rm -- ; quit" -u $USER,$PASSWORD $HOST)
   echo $REMOVE
fi

您对这个问题有想法吗?如何删除列表中的文件(在ls -1tr $REMOTE_DIR/full_backup_ftp*head -$NB_BACKUP_TO_RM之后)

感谢您的帮助

linux bash file xargs lftp
1个回答
0
投票

man lftp之后,对于lftp,看起来xargs是未知的cmd。 xargs rm正在删除本地文件而不是远程文件。

所以请按如下所示使用xargs,它对我有用。

lftp -e "ls -1tr $REMOTE_DIR/full_backup_ftp*; quit" -u $USER,$PASSWORD $HOST | head -$NB_BACKUP_TO_RM | xargs -I {} lftp -e 'rm '{}'; quit' -u $USER,$PASSWORD $HOST
© www.soinside.com 2019 - 2024. All rights reserved.