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


当前回答

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

要测试这个,请运行:

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图片:

对于整个问题:

cmd >> o.txt && [[ $(wc -l <o.txt) -eq 720 ]] && mv o.txt $(date +%F).o.txt

这将在o.txt中追加720行(30*24),之后将根据当前日期重命名文件。

每小时用cron运行上面的程序,或者

while :
do
    cmd >> o.txt && [[ $(wc -l <o.txt) -eq 720 ]] && mv o.txt $(date +%F).o.txt
    sleep 3600
done

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

要测试这个,请运行:

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

这样做几次,然后运行:

cat textfile.txt

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

使用tee和选项-a(——append)允许您一次追加到多个文件,也可以使用sudo(在追加到受保护的文件时非常有用)。除此之外,如果您需要使用bash之外的其他shell,这很有趣,因为并非所有shell都支持>和>>操作符

echo "hello world" | sudo tee -a output.txt

这个帖子有关于tee的很好的答案

我会使用printf而不是echo,因为它更可靠,并且正确地处理诸如new line \n之类的格式。

这个例子产生一个类似于前面例子中的echo的输出:

printf "hello world"  >> read.txt   
cat read.txt
hello world

然而,如果你在这个例子中用echo替换printf, echo会把\n当作一个字符串,从而忽略意图

printf "hello\nworld"  >> read.txt   
cat read.txt
hello
world