1

我在不同的子目录中有大约 100 个同名的 .csv 文件。我需要将这些文件中的所有数据复制到一个 csv 文件中,但由于它们都具有相同的名称,因此它们相互覆盖。您能否帮我提供 shell 脚本代码,我可以在其中重命名所有这些文件,例如:我所有的文件都在不同子文件夹中的名称 example.csv 中。我希望它们是 subfolder1 中的 example1.csv,subfolder2 中的 example2.csv 等等......

这是将覆盖 csv 文件的脚本。

for c in *.csv
do
echo $c
cat $c >> fullreport.csv
done

非常感谢你的帮助 :)

4

2 回答 2

1

“我需要将这些文件中的所有数据复制到一个 csv 文件中……”

cat */example.csv > fullreport.csv
于 2013-09-11T18:12:55.687 回答
0

改为这样做:

for c in *.csv
do
    echo "$c"
    cat "$c"
done > fullreport.csv

假设fullreport.csv仍然不存在。如果需要,将其删除。

要添加更多目录,只需在空格后指定它们:

for c in *.csv a/*.csv b/*.csv
do
    echo "$c"
    cat "$c"
done > fullreport.csv

如果您想递归地执行此操作,请使用find如下:

while read c; do
    echo "$c"
    cat "$c"
done < <(find -type f -iname '*.csv') > fullreport.csv

您也可以将输出放置在不同的目录中,以防止像> ../fullreport.csv.

于 2013-09-07T13:33:53.707 回答