2017-03-05 77 views
0

我想创建一个csv文件。 .txt文件的文件名应该是标题,.txt文件中的所有jpgs文件应该是行。bash创建csv文件

例子:

filename1.txt, filename2.txt, filename3.txt 
filename1a.jpg,filename2a.jpg,filename3a.jpg 
filename1b.jpg,filename2b.jpg,filename3b.jpg 
filename1c.jpg,filename2c.jpg,filename3c.jpg 
       ,filename2d.jpg, 

我遇到的问题是如何追加与上面正确格式文件?

for f in $(ls *.txt) do 
    csv_header="$f" 
    #get all jpgs in current txt file 
    array_jpgs=($(get_jpgs "$f")) 
    for jpg in "${array_jpgs[@]}" do 
     #printf "%s," "$csv_header" >> "$CSV_FILE" 
    done 
done 

我使用GNU的bash,版本33年3月4日

回答

1

只需使用paste一堆的临时文件合并。 (假设get_jpgs输出为每行一个文件名。)

for f in *.txt; do # Do not parse ls 
    { printf '%s\n' "$f" 
     get_jpgs "$f" 
    } > "$f.tmp" 
done 
paste -d, *.tmp > "$CSV_FILE" 
rm *.tmp 
+0

谢谢,不知道糊。 – jack