【发布时间】:2021-01-26 20:50:30
【问题描述】:
我想删除所有具有“.json”扩展名的文件。所以我跑了
find . -name "*.json"
这会产生一些文件
x.json
y.json
z.json
然后我为每个文件执行rm,但是当您有很多文件时,这是一项非常乏味的任务。
有没有办法将rm 与find 结果混合在一起
【问题讨论】:
我想删除所有具有“.json”扩展名的文件。所以我跑了
find . -name "*.json"
这会产生一些文件
x.json
y.json
z.json
然后我为每个文件执行rm,但是当您有很多文件时,这是一项非常乏味的任务。
有没有办法将rm 与find 结果混合在一起
【问题讨论】:
如果使用 GNU find,那就太简单了:
find directory/ -name "*.json" -delete
【讨论】:
您可以使用xargs,它将找到的文件提供给另一个命令。
-exec 的优点是不会为每个文件创建一个新进程:
find . -name "*.json" | xargs rm
【讨论】:
您可以将-exec 选项与find 一起使用。
find . -name '*.json' -exec rm -f {} \;
【讨论】:
-exec rm -f {} +,它会一次将多个文件传递给rm,有点像使用xargs。这样更有效率。