Привет,Улучшенная техника для хранения имени файла в переменной?
Мне нужно сохранить имя файла журнала в переменной, чтобы мой скрипт мог выполнять некоторые проверки ежедневных файлов журнала. Эти журналы всегда имеют другое имя, потому что у них есть метка времени в названии. В настоящее время я использую метод hodge podged, который передает команду ls в sed, сортировку, вырезание и хвост, чтобы получить имя.
CRON_LOG=$(ls -1 $LOGS_DIR/fetch_cron_{true,false}_$CRON_DATE*.log 2> /dev/null | sed 's/^[^0-9][^0-9]*\([0-9][0-9]*\).*/\1 &/' | sort -n | cut -d ' ' -f2- | tail -1)
UPDATE:
$ CRON_DATE поставляется в качестве аргумента сценария. Это дата (день), в которой был создан журнал. Иногда в течение одного дня будет существовать несколько журналов, поэтому я хочу, чтобы это получилось самым последним.
Некоторые типичные имена файлов:
fetch_cron_false_031810090452.log
fetch_cron_true_031310090001.log
и т.д ...
Пожалуйста, имейте в виду, что это работает, как это. Я просто думаю, что это уродливо, и я пытаюсь найти лучший способ снять это.
Я уверен, что я скрестил это вместе с некоторыми материалами, которые я нашел google несколько месяцев назад. он работает сейчас, но я не очень доволен этой техникой. У меня есть некоторые идеи о том, как сделать это лучше, но я имел большой успех на этом сайте раньше и думал, что лучше всего сначала обратиться к богам stackoverflow. Все ответы приветствуются.
Спасибо, Райан
Здесь необходимо указать больше информации. Что такое типичные имена файлов? Какой файл журнала вы хотите получить? Что такое '$ CRON_DATE'? –
Обновлено. Спасибо за примечание. – SDGuero
Скажите, что улучшит это прямо сейчас - сделайте шаг в несколько операций. Выполнение однострочного слоя - это хороший способ взглянуть на код позже и сделать себе лицо. Читаемость всегда лучше, чем умение, 0) – 2010-03-18 23:01:41