如何删除“find”命令的所有结果

13 浏览
0 Comments

如何删除“find”命令的所有结果

我有一个包含多个以.pyc结尾的文件的目录,我希望一次性删除它们。我尝试了以下两种方法:find . -name \'*pyc\' | rmfind . -name \'*pyc\' -exec rm。然而,这两种方法都不符合使用方法(在第一种情况下)或语法正确(在第二种情况下,我得到find: -exec: no terminating \";\" or \"+\")。我该如何将结果传递给一个“删除”命令?

0
0 Comments

问题的原因是要删除"find"命令的所有结果。解决方法是使用以下命令:find . -name "*.pyc" -exec rm {} \;。这个命令可以在当前目录及其子目录中找到所有以".pyc"结尾的文件,并将其删除。

0
0 Comments

问题的原因是使用了-exec选项来执行find命令,但是每个文件都会调用一次rm命令,这在文件数量很大时非常低效。此外,如果不使用--参数,find命令会将文件名解释为rm的参数,而不是要删除的内容。

解决方法是使用-exec rm -- {} +选项,它将尽可能少次地运行rm命令以删除所有文件。同时,使用--参数可以确保find命令将文件名作为要删除的内容,而不是作为rm的参数。

以下是修复后的find命令:

find . -name '*pyc' -exec rm -- {} +

这样做可以提高效率并确保正确删除文件。

0
0 Comments

问题的出现原因:在使用find命令时,可能需要删除所有找到的结果,但是find命令本身并没有提供删除的选项。

解决方法:可以使用-exec选项结合rm命令来删除找到的结果。具体的命令是:find . -name '*.pyc' -exec rm -- '{}' +。这条命令会找到当前目录及其子目录中所有以.pyc结尾的文件,并使用rm命令删除它们。

根据man find的说明,-exec选项后面可以跟一个命令,当这个命令的退出状态码为0时,-exec选项返回真。命令中的{}会被替换为当前文件的路径。在这个命令中,{}被替换为'{}',这是为了兼容一些扩展的shell。

总结起来,要删除find命令找到的所有结果,可以使用-exec选项结合rm命令来实现。具体的命令是find . -name '*.pyc' -exec rm -- '{}' +。

0