Проблема перейменування журналів у MV


1

У мене є файли журналів, створені як log.2015-09-28T13-36-29і я намагаюся змінити назви файлів журналів, щоб вони краще відповідали логротету.

Наступна команда працює для відображення потрібного мені файлу:

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

Але ця команда дає мені помилки, кажучи, що не може знайти файли.

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

Будь-які ідеї, як виправити цю команду? Або кращий спосіб це зробити?


Намагаючись відтворити це або придумати кращий спосіб, але подивіться на це: "(date -d 'today' +'%Y-%m-%d').log"" $Відсутнє" з початку цього. Я вважаю, що так і має бути "$(date -d 'today' +'%Y-%m-%d').log".
JakeGould

Відповіді:


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

@JakeGould - Дякую за вашу спробу редагування, однак я повернув це, оскільки це міняє мої наміри. Незважаючи на те, що викладаєте його як багаторядкову команду, як і ви, це, безумовно, більш читабельний, але мій варіант (тобто, всі в одному рядку) - я вважаю, краща заміна на "попередній" для попередньої команди і, таким чином, більш корисна відповідь .
davidgo

По-перше, я поставив це +1, оскільки це правильна відповідь. І ви маєте право відновити свої зміни, але формат "одного вкладиша" насправді досить важко читати. Ви ризикуєте, що користувачі не зрозуміли, що ви маєте намір чи робите. FWIW, тільки в програмуванні Bash ви дійсно бачите це нескінченне бажання створити "один вкладиш" із чогось мало-мало поважної причини. "Один вкладиш" не економить ні часу, ні зусиль у впровадженні, і це насправді лише те, що кодери роблять, щоб "показати", а не пояснити проблему.
JakeGould

Дякуємо за вашу допомогу @davidgo. Я спочатку ставив це для іншого завдання, і воно працювало за тим сценарієм, тому мені було дивно, що він не працюватиме в цьому. Ваше рішення високо цінується!
Дастін Перкінс

@DustinPerkins Також зверніть увагу на те, що я згадував у своєму коментарі до питання: "(date -d 'today' +'%Y-%m-%d').log"не вистачає $на початку.
JakeGould
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.