1

我有 100 个 1 行 CSV 文件。这些文件当前标记为 AAA.txt、AAB.txt、ABB.txt(在我使用split -l 1它们之后)。每个文件中的第一个字段是我想要重命名文件的内容,因此它将是第一个值,而不是 AAA、AAB 和 ABB。

输入 CSV(文件名 AAA.txt)

1234ABC, stuff, stuff

所需的输出(文件名 1234ABC.csv)

1234ABC, stuff, stuff

我不想编辑 CSV 本身的内容,只需更改文件名

4

4 回答 4

1

在拆分之前从您的原始文件开始

$ awk -F, '{print > ($1".csv")}' originalFile.csv

一口气完成所有工作。

于 2019-05-28T15:42:31.183 回答
1

像这样的东西应该工作:

for f in ./* ; do new_name=$(head -1 $f | cut -d, -f1); cp $f dir/$new_name

将它们移动到新目录以防万一出现问题,或者您需要原始文件名。

于 2019-05-28T15:36:01.037 回答
0

在终端中,更改目录,例如cd /path/to/directory文件在其中,然后使用以下复合命令

for f in *.txt; do echo mv -n "$f" "$(awk -F, '{print $1}' "$f").cvs"; done

注意:有一个内涵echo 命令供您测试,它只会打印出mv 命令,让您看到它是您想要的结果。然后,您可以再次运行它,仅从复合命令中删除echo通过命令mv 实际重命名文件。

于 2019-05-28T15:50:48.363 回答
0

这会将整个输入文件存储到输入文件colum1.csv中。

awk -F, '{print $0 > $1".csv" }' aaa.txt
于 2019-05-28T15:33:56.507 回答