我在终端文件夹中有一个目录。我正在使用 MobaXterm。该目录中有大量文件。文件名很长并且有一些非法字符。一个示例文件名为“秘书长 2015 年后发展议程高级别小组的三位共同主席(印度尼西亚、利比里亚、联合王国) - Media Stakeout-1861343067001.m4a”。我使用以下命令行将文件名写入 csv 文件,到目前为止它一直在工作。
dir$ find . -type f > names.csv
但这一次,文件名不是一列,而是分成几列。
我只想要 A 列中的全名。我想写下原始文件名,包括逗号。相同的命令能够为我以前的数据集编写带有逗号的文件名,只是这些文件名比这个短。
如何解决?
在 Linux 上,GNU find 有一个
-printf
选项可以打印给定格式的文件名;要导入 CSV,您可以用双引号将文件名括起来,例如:CSV 表示逗号分隔值。当电子表格读取文件时,它将逗号解释为字段分隔符。用tr将逗号替换为其他分隔符,例如下划线,因此
它们在你导入时,Field One 不会被分割。
文件名长度在这里没有影响,但导入引擎默认分隔符。选择一个从未在文件名中使用过的字符并将其用作 CVS 分隔符。让我们假设这个选择是§(部分符号)你的
find
命令是:或者,如果您想获取没有起点的文件名:
现在在导入 csv 时指定 § 作为分隔符
有不同风格的 CSV,但使用 sed 的 RFC 4180 兼容解决方案:
这将替换
"
with的实例""
并用双引号封装非空行。