通过使用命令:
rm /file_path/*.csv
我可以删除所需文件夹中的所有csv文件。但是,如果目录为空或没有csv文件,则会出现以下错误:
No such file or directory
如何避免此错误?我在具有某些下游相关性的脚本中具有此逻辑,因此抛出此错误将导致其余代码停止。bash删除文件的最佳方法是:目录?
答案 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