Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何从CSV文件中的值重命名CSV文件_Bash - Fatal编程技术网

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

Bash 如何从CSV文件中的值重命名CSV文件,bash,Bash,我有100个单行CSV文件。这些文件当前被标记为AAA.txt、AAB.txt、ABB.txt(在我对它们使用split-l1之后)。每个文件中的第一个字段是我想将文件重命名为的字段,因此它将是第一个值,而不是AAA、AAB和ABB 输入CSV(文件名AAA.txt) 所需输出(文件名1234ABC.csv) 我不想编辑CSV本身的内容,只需更改文件名,这将把整个输入文件存储到输入文件的colum1.CSV awk -F, '{print $0 > $1".csv" }' aaa.txt

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

输入CSV(文件名AAA.txt)

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


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

,这将把整个输入文件存储到输入文件的
colum1.CSV

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

像这样的方法应该会奏效:

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

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

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

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

并一次完成所有操作。

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


注意:有一个intensional
echo
命令供您测试,它只会打印出
mv
命令供您查看您希望的结果。然后,您可以再次运行它,只需从复合命令中删除
echo
,即可通过
mv
命令根据需要实际重命名文件。

抱歉,但不清楚,请务必在您的帖子中添加更多详细信息,然后让我们知道。
for f in ./* ; do new_name=$(head -1 $f | cut -d, -f1); cp $f dir/$new_name
$ awk -F, '{print > ($1".csv")}' originalFile.csv
for f in *.txt; do echo mv -n "$f" "$(awk -F, '{print $1}' "$f").cvs"; done