Я знаю, что подобные вещи были заданы раньше, но я не смог действительно сделать руку и ногу из того, что было опубликовано.Извлечение даты из имени файла с использованием сценария bash
У меня есть целая куча файлов, которые содержат дату в формате YYYYMMDD в какой-то момент в имени файла. К счастью, это единственная 8-значная подстрока во всех именах файлов!
Мне нужно будет записать даты в другой файл позже, но это должно быть хорошо. Я изо всех сил, чтобы извлечь дату в переменную первого ...
Я знаю, что могу получить его с Grep:
for d in $(ls *.csv | grep -Po "\d{8}"; do
echo $d done
Однако, как я хочу, чтобы получить полное имя файла в переменную тоже пока Я повторяю их, это не вариант сейчас.
Я попытался с помощью СЭД, но я не думаю, что я знаю, как использовать его:
for f in $(ls *.csv); do
d=$($f | sed -e 's/^.*\(\d{8}\).*$')
echo $d
done
Спасибо за указание мне в правильном направлении!
Не могли бы вы разместить несколько примеров имен файлов? –
Здесь вообще не нужно 'sed'; bash может выполнять регулярное выражение, соответствующее изначально. –
... также см. Http://mywiki.wooledge.org/ParsingLs –