如何在不同目录中搜索相同模式的.csv文件,并在shell脚本中将它们合并为一个csv文件和一行标题

如何在不同目录中搜索相同模式的.csv文件,并在shell脚本中将它们合并为一个csv文件和一行标题,shell,csv,unix,Shell,Csv,Unix,我有相同的模式.csv文件: relsendTest.csv relsendTest2.csv relsendTest3.csv 在文件夹中,如 新词201 新词202 新词203 我当前的脚本可以将这些文件转换为单个csv文件 head -1 relsendTest.csv > output.csv for filename in $(ls relsend*.csv); do sed 1d $filename >> output.csv; done 但问题是这些文件

我有相同的模式.csv文件:

  • relsendTest.csv
  • relsendTest2.csv
  • relsendTest3.csv
在文件夹中,如

  • 新词201
  • 新词202
  • 新词203
我当前的脚本可以将这些文件转换为单个csv文件

head -1 relsendTest.csv > output.csv
for filename in $(ls relsend*.csv); do sed 1d $filename >> output.csv; done

但问题是这些文件驻留在同一个目录中。我在不同的目录中有类似这种模式的文件。我需要将这些多个文件合并为一个。

为了测试我的解决方案,我创建了以下结构:

Dir: neolog201
    relsendTest.csv
Dir: neolog202
    relsendTest2.csv
Dir: neolog203
    relsendTest3.csv
然后测试
查找

$ find . -name "relsendTest*.csv" -print
./neolog203/relsendTest3.csv
./neolog202/relsendTest2.csv
./neolog201/relsendTest.csv
现在您有了文件列表。完整的脚本:

#!/bin/bash

# Get the list of files
fileslist=$(find . -name "relsendTest*.csv" -print)

# The header of the output.csv is the first line of the first file in the list
head -1 $(echo $fileslist | awk '{print $1}') > output.csv

# Then loop on each file and get all lines except the first line of each file
for F in $fileslist
do
    sed 1d $F >> output.csv
done

使用
find创建文件列表-名称“relsend*.csv”-打印
。循环列表以生成单个CSV文件。我在我的(ls relsend*.CSV)中替换了您的代码,但得到了相同的结果。我当前的目录中有一些这样的文件,它们被添加到列表中。但一些csv文件位于其他文件夹中。那些文件没有加起来