Это связано с переключением VSFTPD в пассивный режим.
Следуйте этим инструкциям.
1. открыть файл
vim /etc/vsftpd/vsftpd.conf
и написать
pasv_min_port=49152
pasv_max_port=65534
Сохранить и закрыть
2. откройте файл
vim /etc/sysconfig/iptables-config
и напишите
IPTABLES_MODULES="ip_conntrack_ftp"
Сохранить и закрыть.
Перезапустить службу vsftpd
перезапустить службу vsftpd
Из описания вашего вопроса я предполагаю, чтовсего нет. файлов в папке не превышает 999.
Это простой bash-скрипт, запускаемый в верхнем каталоге, т.е. модели:
#!/bin/bash
for i in./*
do
if [ -d "$i" ]
then
j=001
for k in "$i"/*
do
mv "$k" "$i"/"$i""$j".jpg
j=${j#0}
if [ ${j:0:1} -eq 0 ]
then
j=${j#0}
fi
(( j++ ))
j=`printf '%03i' $j`
done
fi
done
Сначала он проверит каждый файл в моделях, является ли он каталогом или нет, if [ -d "$i" ]
. Затем для каждого файла в этом каталоге он изменит свои имена на mv "$k" "$i"/"$i""$j".jpg
. И
j=${j#0}
if [ ${j:0:1} -eq 0 ]
then
j=${j#0}
fi
Приведенный выше код удалит все нули с самого начала, чтобы вы не получили ошибку типа:
((: 008: value too great for base (error token is "008")
printf: 008: invalid octal number
И
j=`printf '%03i' $j`
сделает значение j
длиной 3 цифры.
Попробуйте также эту упрощенную версию Debian _предложение yadav:
for i in *
do if [ -d "$i" ] && cd "$i"
then j=0
for k in *
do ((j++))
echo mv "$k" $(printf "%s%03d.jpg" $i $j )
done
cd..
fi
done
echo
предназначен только для отладки; удалите, если довольны тем, что видите.
Он cd
обращается к каждому доступному каталогу, сбрасывает счетчик, перебирает все целевые файлы, увеличивает счетчик для каждого и выполняет переименование.