Как я могу создать файл CSV из списка каталогов с несколькими столбцами на основе имен файлов?

У меня есть список файлов изображений, которые являются сканированиями получений. Они похожи на это:

gas_20160710_3432.jpg
gas_20160810_242.jpg
water_20161004_4510.jpg

Я хотел бы смочь взять список файлов и превратить его в файл CSV, который я могу сделать с командой 'ls' > files.csv.

Однако я заботился, чтобы заставить имена файлов содержать немного информации о содержании, и я хотел бы проанализировать имена файлов, таким образом, я могу более легко работать с данными при редактировании файла CSV в LibreOffice Calc.

Каждое имя файла имеет тип получения, которое это, затем дата в формате YYYYMMDD и затем денежная сумма, которая записана на получении. Так, я хотел бы выделить ту информацию в различные столбцы, а также иметь один столбец с полным именем файла. Так, конечный результат должен быть похожим на это:

enter image description here

Существует также еще одна проблема. Дата должна быть преобразована от YYYYMMDD до YYYY-MM-DD. Без тире LibreOffice Calc, кажется, запутывается.

Существует ли способ создать файл CSV, который я хочу от содержания каталога из командной строки?

Обратите внимание, что нет никаких других файлов в каталоге кроме сканирований получения, таким образом, не должно быть никакой фильтрации типов файлов или, исключая файлы с по-другому отформатированными именами.

1
задан 26 January 2017 в 09:35

1 ответ

Используя жемчуг:

ls | perl -pe 's/(.)(.*)_(\d{4})(\d{2})(\d{2})_(\d+).jpg/\u$1$2,$3-$4-$5,$6,$&/'

В жемчуге, (...) привык к совпавшему тексту группы, таким образом, (.) группа с отдельным символом, (.*) группа с произвольной строкой, (\d{2}) группа с двумя цифрами (\d цифра, и {2} указывает на два из предыдущих), и так далее. \u преобразовывает следующий атом в верхний регистр. $1, $2... различные группы в порядке. $& содержит весь подобранный текст.

Вывод:

Gas,2016-07-10,3432,gas_20160710_3432.jpg
Gas,2016-08-10,242,gas_20160810_242.jpg
Water,2016-10-04,4510,water_20161004_4510.jpg

Можно добавить заголовки независимо.

2
ответ дан 7 December 2019 в 13:37

Другие вопросы по тегам:

Похожие вопросы: