Печать путей к файлам и имен файлов в каталоге в CSV - PullRequest
1 голос
/ 30 июня 2019

У меня есть каталог, который содержит несколько файлов. Например:

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 Ответ

3 голосов
/ 30 июня 2019

Не проверено, но должно быть близко:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...