删除目录中的文件,如果为空,则忽略

时间:2019-02-21 19:06:03

标签: bash glob

通过使用命令:

rm /file_path/*.csv

我可以删除所需文件夹中的所有csv文件。但是,如果目录为空或没有csv文件,则会出现以下错误:

No such file or directory

如何避免此错误?我在具有某些下游相关性的脚本中具有此逻辑,因此抛出此错误将导致其余代码停止。bash删除文件的最佳方法是:目录?

3 个答案:

答案 0 :(得分:1)

另一个变种是在运行脚本之前检查您的文件夹是否为空:

find file_path/ -type d -empty

如果文件夹为空,它将返回您的文件夹名称。

或者,如果只希望避免出现错误消息,请在rm命令中使用“ -f”选项:

没有:

rm -r file_path/*.csv
rm: cannot remove ‘file_path/*.csv’: No such file or directory

使用:

rm -rf file_path/*.csv

答案 1 :(得分:0)

有关检查/file_path/*.csv是否匹配的方法,请参见Test whether a glob has any matches in bash。但是,即使您在运行rm命令之前进行了这样的测试,如果目录中包含大量CSV文件,它也可能会失败。参见Argument list too long error for rm, cp, mv commands

如果您使用的是find的现代版本,那么这是一种可靠而有效的选择:

find /file_path -maxdepth 1 -type f -name '*.csv' -delete

答案 2 :(得分:-2)

您可以这样做:[ -f /file_path/*.csv ] && rm /file_path/*.csv