将目录中的文件路径和文件名打印到CSV中

时间:2019-06-30 19:55:53

标签: awk sed find

我有一个包含几个文件的目录。例如:

  

File1.bam
  File2.bam
  File3.bam

我想创建一个.csv文件,该文件包含2列并包含一个标题:

  

名称,路径
  File1,/ Path / To / File1.bam
  File2,/ Path / To / File2.bam
  File3,/ Path / To / File3.bam

我已经设法在单独的步骤中组合了一种方法,但是它涉及到创建带有路径的csv,添加文件名,然后再次添加标题。我想在1步中同时添加文件名和路径,这样就不可能链接不正确的文件名和路径。

如果有问题,我正在尝试在批处理作业(SLURM)中运行的脚本中执行此操作,并且输出CSV将在后续工作流步骤中使用。

find ~/Desktop/test -iname '*.csv' -type f >bamlist1.csv
awk '{print FILENAME (NF?",":"") $0}' *.csv > test.csv
{ echo 'Name, Path'; cat bamlist.csv; } > bamdata.csv

1 个答案:

答案 0 :(得分:3)

未经测试,但应该接近:

find ~/Desktop/test -name '*.bam' -type f |
awk '
    BEGIN { OFS=","; print "Name", "Path" }
    { fname=$0; sub(".*/","",fname); print fname, $0 }
' > bamdata.csv

与您的原始脚本一样,以上假设您的文件/目录名称均不包含换行符或逗号。

如果您拥有GNU,则可以执行以下操作:

{ echo "Name,Path"; find ~/Desktop/test -name '*.bam' -type f -printf '%f,%p\n' } > bamdata.csv