Shell:在.CSV中添加标题时,标题不会停留在顶部

时间:2019-01-14 20:46:35

标签: macos shell awk

我使用:

find "$Original" -type f ! -name '.DS_Store' | 
awk -F/ 'BEGIN {print "Total Images"};{print $NF};'  >> "$ServerImageFlow"/SS1.csv 

如果我一次运行它,它会将指定文件夹中的所有文件记录到带有标题“总图像”的.CSV中。

enter image description here

但是如果我运行几次,则Header不会停留在顶部。

enter image description here

3 个答案:

答案 0 :(得分:1)

outfile="${ServerImageFlow}/SS1.csv"
find "$Original" -type f ! -name '.DS_Store' | 
awk -v hd="$(head -1 "$outfile")" -F'/' '
    BEGIN{title="Total Images"; if (hd != title) print title} {print $NF}
' >> "$outfile"

答案 1 :(得分:1)

仅在输出文件尚不存在时,才在开始awk之前将标题写在 之前。

尽管您实际上根本不需要awk:可以告诉GNU find仅打印基本名称。

outfile="$ServerImageFlow"/SS1.csv
[[ -e "$outfile" ]] || echo "Total Images" >"$outfile"
find "$Original" ! -name '.DS_Store' -type f -printf '%f\n' >>"$outfile"

答案 2 :(得分:0)

您可以使用find仅打印基本名称并追加到文件中,然后再检查标题是否存在:

f="$ServerImageFlow"/SS1.csv
find "$Original" -type f ! -name '.DS_Store' -printf "%f\n" >> "$f"
gawk -i inplace 'NR == 1 && $0 != "Total Images" {print "Total Images"}; 1' "$f"