Простым решением является сохранение архивной директории для ваших именованных журналов, чтобы ваш cmd стал
mv "$x" $MY_FILE_PATH/archive_logs/"${x%*.log}$(date +%Y%m%d-%H%M%S).log"
на примере $MY_FILE_PATH/archive_logs/
выберите имя, которое имеет смысл для вас.
ELSE
Вы можете использовать другой трюк, чтобы цикл for не совпадал с переименованными лог-файлами
mv "$x" "${x%*.log}$(date +%Y%m%d-%H%M%S).LOG"
Уведомление о переименовании .log в .LOG
ELSE
Вы должны исключить файлы из обработки
renameLogs() {
for x in $MY_FILE_PATH/logs/*.log; do
case "${x}" in
*2[0-9][0-9][0-9][0-1][0-9][0-3][0-9]* )
: # if_File_has_YYYYMMDD_value_embedded_skip_this_file
;;
* )
mv "$x" "${x%*.log}$(date +%Y%m%d-%H%M%S).log"
;;
esac
done
}
OR
Хм ... переформатирование перестало работать! ; - / * * 1 021
renameLogs () {
для х в $ MY_FILE_PATH / logs / .log; делать
если [[ ! "$ {x}" ~ = * 2 [0-9] [0-9] [0-9] [0-1] [0-9] [0-3] [0-9] *]]; затем
mv "$ x" "$ {x% .log} $ (дата +% Y% m% d-% H% M% S) .log";
фи;
сделанный ;
}
Непроверенные.
Регулярное выражение используется.
Регулярные выражения являются расширением идеи подстановочного знака, с которой вы, возможно, знакомы по использованию командной строки, то есть ls *.txt
будут расширяться только до файлов, заканчивающихся на txt, за исключением тех, которые заканчиваются на .exe, .bash , .txt2 и т. д.
Для вашего случая *2[...]*
- это выражение reg, которое соответствует дате (исключая метку времени) в указанном вами формате. * = Любые символы, одиночные символы соответствуют только себе, и последний бит reg- ex magic - это диапазоны символов, в данном случае '[0-9]' и simliar.
Оператор ~=
сообщает, что сравнивайте LeftH и RightHand с помощью регулярных выражений.
Проверьте, соответствует ли ${x}
1043 *
* any chars,
follow by '2',
followed by any number [0-9] (3 times) (a year value)
followed by [0-1][0-9] ( a month value)
followed by [0-3][0-9] ( a day value)
* any chars,
Таким образом, вы можете легко расширить *2[0-9][0-9][0-9][0-1][0-9][0-3][0-9]*
, чтобы включить слово «предыдущий» в правильное местоположение, чтобы reg-expr соответствовал вашему окончательному значению $ {x}, т.е.
if [[ "${x}" ~= *Previous*2[0-9][0-9][0-9][0-1][0-9][0-3][0-9]* ]] ; then ...
Надеюсь, это поможет.