我有超过 1000 个文本文件,我想计算每个文件中的行数并将其插入到第一行。我用 wc 计算,但无法插入。
wc -l *.txt |
答案1
使用 GNU sed:
for f in *.txt; do sed -i "1i$(wc -l < "$f")" "$f"; done
1i
在第一行之前插入文本,并将-i
更改写入文件。
纯粹主义者可能会ed
使用sed
:
for f in *.txt; do printf '0r !wc -l < %%\n,wq\n' | ed -s "$f"; done
答案2
你不能(轻易)前置某些内容到文件中。因此需要一个临时文件,如下所示:
for f in *.txt; do
tmpfile=$(mktemp) # temp. file
wc -l "$f" > $tmpfile # store number of lines
cat "$f" >> $tmpfile # append file content
mv "$tmpfile" "$f"; # move temp. file to original file
done