我是Cygwin的新手,可以真正使用一些帮助。我有一个带有多个子目录的根目录(所有子目录都在同一级别,没有子子目录等)。每个子目录包含几个CSV文件(格式相同,没有标题)。我想将每个子目录中的CSV合并为每个子目录的一个大型CSV文件。也就是说,每个子目录一个CSV,包含该单个子目录中所有CSV的内容。
我想我可以使用简单命令cat *.csv > largefile.csv
,但我不太确定如何扫描所有子目录并将此代码应用于每个子目录。根据我已经完成的教程,我相信这应该有效:
for dir in `find . -type d`
do cat *.csv > largefile.csv
done
这是最好的方法吗?这似乎太简单了。
另外,有没有办法将这些命令存储在我可以在需要执行此任务时执行的文件中?
提前感谢帮助这位初学者!
答案 0 :(得分:0)
我会通过创建此文件来实现:
<强> 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
可以从任何目录运行。