如果文件存在,我该如何删除?

时间:2017-03-07 18:02:06

标签: shell

我有一个shell脚本,我想添加一行或两行,只有存在时才会删除日志文件。目前我的脚本只是:

rm filename.log

但是如果文件名不存在,我会收到一条消息,说明filename.log不存在,无法删除。这是有道理的,但我不想在每次运行脚本时都看到这一点。使用IF语句是否有更聪明的方法我可以完成这项工作?

4 个答案:

答案 0 :(得分:33)

-f参数传递给rm,这将使它处理命名文件不存在成功的情况,并且在这种情况下将禁止任何错误消息:

rm -f -- filename.log

字面要求的内容更像是:

[ -e filename.log ] && rm -- filename.log

但更多的是输入并添加额外的故障模式。 (如果在[对其进行测试之后删除了其他内容,但在rm删除之前,那么您又会再次出现故障。

顺便说一句,-- s会导致文件名被视为文字,即使它以前导破折号开头;如果你的名字来自变量或者没有严格控制,你应该习惯性地使用这些。

答案 1 :(得分:1)

首先触摸该文件,如果该文件不存在则会创建该文件,但只有在 存在时才更改时间戳。

touch filename && rm filename

效率低,但易记。

答案 2 :(得分:0)

if [ ! -f 'absolute path of file' ]
then
  echo "File does not exist. Skipping..."
else
  rm 'absolute path of file'
fi

如果您使用以下内容,则应该可以使用。

答案 3 :(得分:0)

您可以使用

rm -rf my/dir || true