如何合并多个 `find` 命令的输出?

如何合并多个 `find` 命令的输出?
find -type f -name "*.avi" -exec md5sum {} + > checklist.chk
find -type f -name "*.mp4" -exec md5sum {} + > checklist.chk

如何结合这两个命令?

  1. 通过将两个搜索词组合在一个命令中或

  2. 以便每个命令都将其输出添加到同一个文件。

希望您清楚我想做什么。

答案1

合并:

find -type f \( -name "*.avi" -or -name '*.mp4' \) -exec md5sum {} + > checklist.chk 

将输出添加到一个文件:

find -type f -name "*.avi" -exec md5sum {} + > checklist.chk
find -type f -name "*.mp4" -exec md5sum {} + >> checklist.chk

答案2

有很多方法可以做到这一点:

使用或-o

find . -type f \( -name '*.avi' -o -name '*.mp4' \) -exec md5sum {} + > checklist.chk

使用正则表达式:

find . -type f  -regextype posix-extended -regex '.*\.(avi|mp4)$' -exec md5sum {} + > checklist.chk

两者都会将输出写入文件checklist.chk

答案3

使用-o标志(位于find手册页中的 OPERATORS 下)

find . -type f \( -name "*.avi" -o -name "*.mp4" \) -exec md5sum {} + > checklist.chk

相关内容