根据我得到的帮助这个问题,我有这个在 Windows 10 PowerShell 中运行的 Perl 命令:
ls |% { $_.Name } | perl -pe 's/(.)(.*)_(\d{4})(\d{2})(\d{2})_(\d+).jpg/\u$1$2,$3-$4-$5,$6,$&/' > filename.csv
目的是列出目录中所有具有预格式化文件名的文件,并创建一个 CSV 文件,这些文件名被分成单独的列。每个文件名都是收据的扫描件,文件名包含日期、费用和费用类型等信息。
文件名如下所示:
expense_name_20200212_300.jpg
运行上述 Perl 命令后,我在记事本、LibreOffice 或任何其他编辑器中打开文件,上述文件名将显示为:
expense_name,2020-02-12,300,expense_name_20200212_300.jpg
我不知道 Perl 命令的哪部分在日期中放置破折号,因为我对 Perl 一无所知,但这就是它的作用。
在大多数情况下,上述命令运行良好。它按预期创建了一个 CSV 文件。
但是,一个问题是,当我在 LibreOffice 中打开 CSV 文件时,日期不会接受任何日期格式。这是因为在每个日期的单元格中,日期后面都附加了一个撇号。我认为这是因为 LibreOffice 将日期字段解释为文本,并将其标记为文本,即使它全是数字。原始文件名中的格式为 YYYYMMDD,但在 CSV 中呈现为 YYYY-MM-DD。
我已经学会了如何按照说明删除该撇号此网页。但最好不要有那些额外的搜索和替换步骤。
有没有办法让上面的 Perl 命令创建一个 CSV 文件,其中 LibreOffice 将把日期字段识别为数字而不是附加撇号?