shell脚本,用于删除已存在的文件

shell script to remove a file if it already exist

我正在处理一些我将数据存储在文件中的东西。但每次运行脚本时,它都会被附加到前一个文件中。

如果文件已经存在,我需要有关如何删除该文件的帮助。


不要费心检查文件是否存在,只需尝试删除它。

1
2
3
rm -f /p/a/t/h
# or
rm /p/a/t/h 2> /dev/null

但更可能的是,如果您要附加到文件中,这是因为您的脚本正在使用>>将某些内容重定向到文件中。用>代替>>。很难说,因为你没有提供代码。


我使用的另一个单行命令是:

1
[ -e file ] && rm file


您可以使用:

1
2
3
4
5
6
7
#!/bin/bash

file="file_you_want_to_delete"

if [ -f $file ] ; then
    rm $file
fi


如果您想忽略检查文件是否存在的步骤,那么您可以使用一个相当简单的命令,该命令将删除文件(如果存在),如果不存在则不会引发错误。

1
 rm -f xyz.csv


像这样的东西行得通

1
2
3
4
5
6
#!/bin/sh

if [ -fe FILE ]
then
    rm FILE
fi

-F检查它是否是常规文件

-e检查文件是否存在

Introduction to if for more information

编辑:与-f一起使用的-e是多余的,单独使用-f也应该有效。


Jindra Helcl答案的一行版本:

[ -f file ] && rm file

或使用变量:

1
2
3
4
#!/bin/bash

file="/path/to/file.ext"
[ -f $file ] && rm $file


if [ $( ls ) ]; then rm ; fi

另外,如果使用>而不是>>重定向输出,它将覆盖以前的文件。