1

У меня есть файлы журналов, созданные как log.2015-09-28T13-36-29 и я пытаюсь изменить имена файлов журналов, чтобы они лучше подходили logrotate.

Следующая команда работает для отображения файла, который мне нужно переименовать:

ls log.$(date -d 'today' +'%Y-%m-%d')*

Но эта команда дает мне ошибки, говоря, что не может найти файлы.

mv "log.$(date -d 'today' +'%Y-%m-%d')*" "(date -d 'today' +'%Y-%m-%d').log"

Любые идеи о том, как исправить эту команду? Или лучший способ сделать это?

1 ответ1

2

Проблема, с которой вы столкнулись, связана с синтаксисом вашей команды mv . Если вы на минуту забыли, что пытаетесь работать с файлами даты, ваша команда эквивалентна:

mv file.a file.b file.c file.d

В этом случае не ясно, какой файл должен быть переименован в какой.

Решением проблемы может быть использование команды для перебора каждого файла и переименования его - может быть, что-то вроде:

for each in log.$(date -d 'today' +'%Y-%m-%d')*; do mv $each $(date -d
'today' +'%Y-%m-%d').log;done

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .