Я бы хотел изменить суффикс имени файла из файлов (используя bash-скрипт), но иногда встречаются файлы с одним периодом, а некоторые с двумя.
Теперь я используюthis:
new_file=`echo ${file} | sed 's/\(.*\.log.*\)'${suf}'/\1.'${num}'/'`
Где 'new_file' - это новое имя файла, 'file' - оригинальное имя файла, '$ {suf}' суффикс файла и $ {num} новый номер.
Так что some.log должно стать some.log.1 и some.log.1 должно стать some.log.2 .С моим кодом some.log становится some.log.1 , но some.log.1 остается some.log.1 .
Надеюсь, я достаточно ясно.Я ценю любой совет (даже не используя sed).
Обновление:
@ paxdiablo .Я думаю, что-то пошло не так, тестируя.
Теперь я использую этот кусок кода в качестве теста;
#!/usr/bin/bash
shft() {
for suff in {6..1} ; do
if [[ -f "$1.${suff}" ]] ; then
((nxt = suff + 1))
echo Moving "$1.${suff}" to "$1.${nxt}"
mv -f "$1.${suff}" "$1.${nxt}"
fi
done
echo Moving "$1" to "$1.1"
mv -f "$1" "$1.1"
}
clear
folder=~/logs/*.log
for i in {1..20}; do
echo ${i}> ~/logs/some.log
for fspec in ${folder} ; do
shft "${fspec}"
done
done
Теперь все работает нормально.Извините за путаницу.