2017-01-05 7 views
0

Итак, я пытаюсь написать скрипт для wc-файлов с помощью команды date. Формат файлов, например, выглядит следующим образом: testfile20170104.gz.Unix Shell Scripting с использованием команды даты

Теперь файлы установлены, чтобы иметь вчерашнюю дату в формате yyyymmdd. Так что если сегодня будет 1/5/2017, файл будет иметь предыдущий день 1/4/2017 в формате yyyymmdd, как вы видите в примере выше.

Обычно для подсчета файла все, что нужно сделать, это просто ввести: gzcat testfile20170104.gz | wc -l, чтобы получить количество слов.

Однако, что я хочу сделать, это запустить скрипт или даже цикл for, который gzcat файл, но вместо того, чтобы копировать и вставлять имя файла в командной строке, я хочу использовать команду date для ввода вчерашнего дата в имени файла в формате yyyymmdd.

Так как шаблон что-то вроде этого:

gzcat TestFile * .gz | туалет -l | date = "- 1 days" +% Y% m% d

Теперь я знаю, что у меня есть ПОЛНОСТЬЮ, но вы получаете картину. Я хочу заменить «*» на выход из команды даты, если это имеет смысл ...

Любая помощь будет очень признательна!

Спасибо!

ответ

0

Вы хотите:

filename="testfile$(date -d yesterday +%Y%m%d).gz" 
zcat "$filename" 
+0

спасибо это работает! ценить это. –

+0

Предположим, я хочу реализовать это в цикле for, а не в сценарии sh ... –

+0

Простите, что? Не-ш-петля? –