使用 Cygwin 合并多个子目录中的 CSV 文件

Merge CSV files in multiple sub directories using Cygwin

我是 Cygwin 的新手,确实需要一些帮助。我有一个包含多个子目录的根目录(所有子目录都在同一级别,即没有 sub-sub 目录等)。每个子目录包含几个 CSV 文件(相同格式,无 headers)。我想将每个子目录中的 CSV 合并到每个子目录的一个大 CSV 文件中。也就是说,每个子目录一个 CSV,包含该子目录中所有 CSV 的内容。

我想我可以使用简单的命令 cat *.csv > largefile.csv,但我不太确定如何扫描所有子目录并将此代码应用于每个子目录。根据我学习过的教程,我相信这应该可行:

for dir in `find . -type d`
do cat *.csv > largefile.csv
done

这是最好的方法吗?好像太简单了。

此外,有没有办法将这些命令存储在一个文件中,以便在我需要执行此任务时执行?

在此先感谢您帮助这位初学者!

我会通过创建这个文件来做到这一点:

cat_all_csv_dir.sh:

#!/bin/bash
for dir in *; do
    # continue if it is not a directory or if it does not contain any csv
    if [ ! -d "$dir" ] || [ -z "$(ls "$dir"/*.csv 2>/dev/null)" ]; then
        continue;
    fi
    cat "$dir"/*.csv > "$dir".csv
    echo $dir
done

您应该在一个文件夹中创建它,该文件夹存在于 PATH 环境变量中。 它的值可以通过输入 echo $PATH 命令来打印。 通过这种方式,cat_all_csv_dir.sh 可以是来自任何目录的 运行。