【发布时间】:2019-11-12 22:15:44
【问题描述】:
我尝试创建一个脚本,该脚本使用 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