rm -f 的替代选项

rm -f 的替代选项

我想运行命令行:

cd ~/www/tmp/; rm -P 2*

但如果没有以 2 开头的文件,我会收到错误消息。

但是,您可能会认为我想要使用-f

-f      Attempt to remove the files without prompting for confirmation, regardless of the file's permissions.  If the file does not exist, do not display a diagnostic message or modify the exit status to reflect an error.

和我关心文件权限 - 如果发生奇怪的事情,我更喜欢命令中止。我只想抑制“不存在”错误。

我查看了其他一些带有“rm 错误”的问题,发现这两个问题似乎(有点)相关:

按名称删除文件和目录。没有这样的文件或目录

但是,我不明白这个问题的答案中发生的一切,也不知道我需要它吗?

touch这个问题中建议的黑客:

文件丢失时 rm 不报告吗?

似乎可行,因为我认为我不介意性能受到影响(但是您会接受什么类型的性能影响? - 即:这是一种相当可扩展的技术,还是我只是在学习非常坏的习惯?)

我不确定如何if-then在命令行中执行操作。

是否还有其他选项可用于简单的命令行剪切粘贴清理?

find -delete更适合我的情况吗?如果是这样,为什么?


有问题的错误:

rm: 2*: No such file or directory

答案1

rm -P为呼吁现存的名称与目录中的模式匹配的常规文件(但不低于目录):

find directory -maxdepth 1 -type f -name 'pattern' -exec rm -P {} +

例如,

find ~/www/tmp/ -maxdepth 1 -type f -name '2*' -exec rm -P {} +

要仅匹配非目录,请使用! -type d代替-type f.不同之处在于,这! -type d适用于更广泛的文件类型(符号链接、命名管道、套接字等)

由于您希望系统提示您输入有关找到的文件的某些条件,因此您应该不是使用-delete而不是-exec rm因为它的工作原理是rm -f.

删除-maxdepth 1find递归地查找子目录。

相关内容