将文件名添加为.txt文件中的一列,并串联到一个文件中

时间:2018-12-20 20:06:25

标签: bash unix

我有28个目录,其名称如下:

_.LD_RESULTS_Astrocytes_BloodCells_GeneSet
_.LD_RESULTS_Astrocytes_Endothelia_GeneSet
_.LD_RESULTS_Polydendrocytes_Endothelia_GeneSet
_.LD_RESULTS_Microglia.x_Microglia.y_GeneSet
_.LD_RESULTS_Endothelia_Neurons_GeneSet

它们都包含不同的.txt文件(每个目录约20个)。

_.LD_RESULTS_Astrocytes_BloodCells_GeneSet_ADHD.cell_type_results.txt               _.LD_RESULTS_Astrocytes_BloodCells_GeneSet_Height.cell_type_results.txt
_.LD_RESULTS_Astrocytes_BloodCells_GeneSet_ALS.cell_type_results.txt                _.LD_RESULTS_Astrocytes_BloodCells_GeneSet_Insomnia.cell_type_results.txt
_.LD_RESULTS_Astrocytes_BloodCells_GeneSet_Alzheimers.cell_type_results.txt

我正在尝试将这些文件名作为一列添加到文本文件中,并将它们全部连接到一个文件中,并将其命名为foldername_results.txt

我从此开始,它的作用是将所有目录中的所有.txt文件串联为一个名为all_results.txt的文件。

for d in *; do
  [[ -d "$d" ]] && cd "$d" || continue
  awk '{print $0,FILENAME}' *.txt > all_results.txt
  cd -
done

我只想稍作修改,以便all_results.txt也包括目录名。我该如何实现?

谢谢。

1 个答案:

答案 0 :(得分:0)

...
awk -v dir="$PWD" '{print $0,dir,FILENAME}' ...
...