2017-06-09 3 views
-1

Ich versuche, dieses Skript zu verwenden, um eine Liste von Dateinamen (einschließlich ihres Pfades) zu erstellen und jeden Pfad durch ein Komma getrennt zu haben, also würde eine Ausgabe wie folgt aussehen: file1 .txt, file2.txt, file3.txt ... usw. Wie gehe ich vor?Cat Befehl gibt "Keine solche Datei oder Verzeichnis"

#!/bin/bash 
LEFT=/home/ndevon/USER/SRA/PE/*_1.fastq.gz 
for f in $LEFT; do 
    cat "${f}," >> /home/ndevon/USER/left_list.txt 
done 
+1

Warum gibt es ein Komma nach '$ {f}'? – Jens

+2

Ich glaube, du meintest 'echo', nicht' cat' – mustaccio

+0

@mustaccio Oder besser, printf, da Echo ein Zeilenumbruch anfügt. – Jens

Antwort

1

Was Sie wollen, ist wahrscheinlich

echo /home/ndevon/USER/SRA/PE/*_1.fastq.gz | tr ' ' , 

die Räume Komma übersetzt. Dies funktioniert, solange Ihre Dateinamen keine Leerzeichen enthalten.

+0

Dies funktioniert auch mit Leerzeichen in den Dateinamen: ' ls -1/home/ndevon/USER/SRA/PE/* _ 1.fastq.gz | tr '\ n' ',' ' – Jack

0

Versuchen Sie folgendes:

# read the filenames into an array 
files=(/home/ndevon/USER/SRA/PE/*_1.fastq.gz) 

# print the filenames comma-separated 
IFS=, 
echo "${files[*]}" > output_file 
Verwandte Themen