【问题标题】:Empty a file in linux bash [duplicate]在linux bash中清空文件[重复]
【发布时间】:2019-10-30 07:45:34
【问题描述】:

哪一种是在 Linux 中清理或清空文件的最佳方法? 我必须将文件压缩( tar )到存档,然后清理/清空它;这就是我所做的,它工作正常:

tar -zcvf /mnt/file.tar.gz /mnt/file.txt > /dev/null 2>&1

echo "" > /mnt/file.txt

我是用echo做的,可能有更好的方法吗?

谢谢

【问题讨论】:

  • 公然重复的这么多答案?没有一票可以结束?

标签: linux bash file echo


【解决方案1】:

有多种方法可以做到这一点:

我们假设我们的文件名为 access.log,它位于当前目录中:

1.

: > access.log

2.

true > access.log

3.

cat /dev/null > access.log

4.

cp /dev/null access.log

5.

dd if=/dev/null of=access.log

6.

echo -n "" > access.log

7.

echo -n > access.log

【讨论】:

  • 解决方案 6+7 不会清空文件,因为它们会写入换行符。 echo -n 修复它。 (我都编辑了)。
  • @Wimm 我已经测试过它们并且它们可以工作,">" 操作符用给定的内容覆盖文件内容,在我们的例子中是一个空字符串
  • @Dan nah,echo 打印没有 -n 的换行符。试试echo > access.log && wc -c <access.log,它会打印 1
【解决方案2】:

只是截断它:

truncate -s 0 file

【讨论】:

    【解决方案3】:

    一个选项是:

    touch passbook.txt
    

    在 Linux 中创建空文件的另一种方法是输入以下命令:

    > file-name-here
    echo '' > filename
    ls filename
    file filename
    

    【讨论】:

      【解决方案4】:

      编辑(压缩文件并取消实际文件): 从@oguz ismail 的好答案中汲取灵感,我在这里也使用带有压缩文件的truncate 选项.

      tar -zcvf file.tar.gz file.txt && truncate -s 0 file.txt
      


      我会选择> /mnt/file.txtecho 更容易一些。

      【讨论】:

        【解决方案5】:
        tar czvf /tmp/empty.tar.gz --files-from=/dev/null --overwrite 
        

        我找到了方法here

        【讨论】:

        • 恕我直言,我不认为 OP 正在寻找创建一个空的 zip 文件,他/她正在寻找压缩文件,然后取消实际文件,如果我得到正确的话。
        猜你喜欢
        • 2020-03-24
        • 1970-01-01
        • 2021-01-28
        • 2023-01-30
        • 2012-05-26
        • 2021-05-28
        • 2016-12-18
        • 2019-09-02
        • 2016-04-05
        相关资源
        最近更新 更多