我有一个包含多个以.pyc
结尾的文件的目录,我想一次删除所有文件。我试过了两个
find . -name '*pyc' | rm
和
find . -name '*pyc' -exec rm
但是,这些陈述都不符合用法(在第一种情况下)或语法正确(在第二种情况下,我得到find: -exec: no terminating ";" or "+"
)。如何将结果“管道”为“删除”命令?
答案 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命令?你已经找到了它们。