如何从CSV文件中的值重命名CSV文件

时间:2019-05-28 15:27:37

标签: bash

我有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 个答案:

答案 0 :(得分:1)

类似的东西应该起作用:

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

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

答案 1 :(得分:1)

从原始文件开始,然后拆分

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

一键完成。

答案 2 :(得分:0)

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

awk -F, '{print $0 > $1".csv" }' aaa.txt

答案 3 :(得分:0)

在终端中,更改目录,例如cd /path/to/directory文件所在的位置,然后使用以下 compound命令

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

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