我想运行命令行:
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
这个问题中建议的黑客:
似乎可行,因为我认为我不介意性能受到影响(但是您会接受什么类型的性能影响? - 即:这是一种相当可扩展的技术,还是我只是在学习非常坏的习惯?)
我不确定如何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 1
以find
递归地查找子目录。