Мне нужен скрипт, который удаляет старые файлы с FTP-сервера, но ничего не работает. Я протестировал следующий скрипт, который нашел, но когда я запустил, я получаю сообщение об ошибке: «Синтаксическая ошибка в выражении (токен ошибки« 0 + 5 »)».Удалить старые файлы из ftp с помощью сценария оболочки
Кто-нибудь может мне помочь?
#!/bin/bash
# get a list of files and dates from ftp and remove files older than ndays
ftpsite="HOSTNAME"
ftpuser="USERNAME"
ftppass="PASSWORD"
putdir="FOLDER"
#age of files they should delete
ndays=1
# work out our cutoff date
MM=`date --date="$ndays days ago" +%b`
DD=`date --date="$ndays days ago" +%d`
echo removing files older than $MM $DD
# get directory listing from remote source
listing=`ftp -i -n $ftpsite <<EOMYF
user $ftpuser $ftppass
binary
cd $putdir
ls
quit
EOMYF
`
lista=($listing)
# loop over our files
for ((FNO=0; FNO<${#lista[@]}; FNO+=9));do
# month (element 5), day (element 6) and filename (element 8)
#echo Date ${lista[`expr $FNO+5`]} ${lista[`expr $FNO+6`]} File: ${lista[`expr $FNO+8`]}
# check the date stamp
if [ ${lista[`expr $FNO+5`]}=$MM ];
then
if [[ ${lista[`expr $FNO+6`]} -lt $DD ]];
then
# Remove this file
echo "Removing ${lista[`expr $FNO+8`]}"
ftp -i -n $ftpsite <<EOMYF2
user $ftpuser $ftppass
binary
cd $putdir
delete ${lista[`expr $FNO+8`]}
quit
EOMYF2
fi
fi
done
Я использовал «if [[$ {lista [$ ((FNO + 5))]} ==" $ MM "]];" и работа! Большое спасибо: D –
Рад, что помогло! если вы нашли, что мой ответ был полезен для вас, вы можете «принять» его, нажав на стрелку, по стрелкам вверх, окружающим число в левом верхнем углу моего ответа. Хороший код, другой для управления удалением ftp. Удачи. – shellter
@JhonatanSilva Я пробовал этот скрипт. Он работает без ошибок, но не удаляет файлы. Не могли бы вы отправить мне мою копию на адрес [email protected]? – Ghayel