如何将命令的输出附加到文本文件的末尾?


当前回答

使用>> file_to_append_to命令追加文件。

例如echo "Hello" >> testFile.txt

注意:如果你只使用一个>,你会覆盖文件的内容。为了确保这种情况不会发生,你可以在你的.bashrc中添加set -o noclobber。

这确保了如果您不小心在现有文件中键入命令> file_to_append_to,它将提醒您该文件已经存在。示例错误信息:文件存在:testFile.txt

因此,当您使用>时,它只允许您创建一个新文件,而不能覆盖现有文件。

其他回答

您可以使用>>操作符。这将把命令中的数据附加到文本文件的末尾。

要测试这个,请运行:

echo "Hi this is a test" >> textfile.txt

这样做几次,然后运行:

cat textfile.txt

您将看到文本被多次追加到textfile.txt文件。

在Linux操作系统中,可以使用cat命令将文件内容追加到另一个文件

cat fileName_1.txt >> fileName_2.txt

在前面的命令中,您将把fileName_1.txt的内容追加到fileName_2.txt。

在Windows操作系统中可以使用type命令

type fileName_1.txt >> fileName_2.txt

请看这张gif图片:

使用>> file_to_append_to命令追加文件。

例如echo "Hello" >> testFile.txt

注意:如果你只使用一个>,你会覆盖文件的内容。为了确保这种情况不会发生,你可以在你的.bashrc中添加set -o noclobber。

这确保了如果您不小心在现有文件中键入命令> file_to_append_to,它将提醒您该文件已经存在。示例错误信息:文件存在:testFile.txt

因此,当您使用>时,它只允许您创建一个新文件,而不能覆盖现有文件。

虽然所有这些答案在技术上都是正确的,但通常情况下,使用>>追加到文件中是正确的方法,但请注意,如果在例如解析/处理文件时在循环中使用此方法,并将每行追加到结果文件中,则这可能比您预期的要慢得多。

一个更快的选择可能是:

stringBuilder=""
while read -r line; do
  # $'\n' prints a newline so we don't have to know what special chars the string contains
  stringBuilder+="$line"$'\n'
done < "myFile.txt"
echo "$stringBuilder" > $file

警告:您正在将所有行读入内存;内存是一种有限的资源,所以不要对巨大的文件这样做。

使用>>操作符将文本附加到文件中。