linux 如何将文件的内容复制到同一文件的末尾?

mi7gmzs6  于 2022-11-22  发布在  Linux
关注(0)|答案(3)|浏览(142)

我需要将文件的内容复制到同一文件的末尾。
我编写了下面的代码。

#!/bin/bash
cat file.txt >> file1.txt
cat file1.txt >> file.txt
rm file1.txt

但是它创建了一个额外的文件。如何在不创建额外文件的情况下完成这一操作呢?

6ie5vjzr

6ie5vjzr1#

您可以执行以下操作:

input=file1.txt
 dd bs="$(wc -c < "$input")" count=1 if="$input" >> "$input"

但是....为什么呢?使用辅助文件没有什么错,如果你在创建后不久就删除它,那么它几乎不可能引起任何实际的磁盘操作。只需创建临时文件并删除它。注意,这有一个固有的争用条件,由于文件大小的计算(而wc -c是一种很糟糕的方法!)如果任何其他进程正在修改文件,但这个问题是您问题描述中固有的。

0wi1tuuw

0wi1tuuw2#

您可以创建一个变量作为文件的值并将其置于末尾:)

zvokhttg

zvokhttg3#

或者用海绵-这正是它的作用。

cat file1.txt file1.txt | sponge file1.txt

相关问题