shell脚本,允许在超过特定大小时清空文件

时间:2017-09-05 08:26:59

标签: linux bash shell unix

我正在寻找一个Linux脚本,它允许在文件超过一定大小时清空文件的内容,例如50 kB。

我试过这个剧本:

#!/bin/bash
find /home/walid/Documents -type f -size +50k -exec echo >"{}" \;

但它不起作用。

另一方面,它适用于删除文件:

#!/bin/bash
find /home/walid/Documents -type f -size +50k -exec rm "{}" \;

3 个答案:

答案 0 :(得分:1)

您的重定向(>)在开始find之前发生。您现在可能有一个名为{}的文件。

我建议使用truncate而不是重定向来覆盖文件:

find /home/walid/Documents -type f -size +50k -exec truncate --size 0 "{}" \;

答案 1 :(得分:0)

尝试一下:

find /home/walid/Documents -type f -size +50k -exec cp /dev/null {} \;

这应该适用于任何*nix like操作系统,但您也可以尝试truncate -s 0 filename

find /home/walid/Documents -type f -size +50k -exec truncate -s 0 {} \;

答案 2 :(得分:0)

对您的第一个脚本进行一些调整应该可以正常工作:

#!/bin/bash
find /home/walid/Documents -type f -size +50k -exec sh -c 'echo -n > {}' \;