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

时间:2017-07-11 15:45:05

标签: bash

我有一个包含多个以.pyc结尾的文件的目录,我想一次删除所有文件。我试过了两个

find . -name '*pyc' | rm

find . -name '*pyc' -exec rm

但是,这些陈述都不符合用法(在第一种情况下)或语法正确(在第二种情况下,我得到find: -exec: no terminating ";" or "+")。如何将结果“管道”为“删除”命令?

3 个答案:

答案 0 :(得分:1)

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

来自man find

  
      
  • -exec utility [argument ...] ;   如果名为utility的程序返回零值作为其退出状态,则为True。可选参数可以传递给实用程序。表达式必须以分号(;)结束。如果你调用   从shell中查找,如果shell将其视为控件操作符,则可能需要引用分号。如果字符串{}出现在实用程序名称或参数中的任何位置   替换为当前文件的路径名。将从执行查找的目录执行实用程序。实用程序和参数不受shell模式和结构的进一步扩展的影响。

  •   
  • -exec utility [argument ...] {} +   与-exec相同,只是{}被替换为尽可能多的路径名   每次调用实用程序都可能。此行为类似于> xargs的(1)。

  •   

{}不需要在bash中引用,但这有助于与其他一些扩展shell兼容。

答案 1 :(得分:1)

关注Why are the backslash and semicolon required with the find command's -exec option?后,我使用了

find . -name '*pyc' -exec rm {} \;

答案 2 :(得分:0)

rm *.pyc

如果他们全部在同一目录中,为什么还需要find命令?你已经找到了它们。