使用 find 收集文件

Osc*_*Ryz 5 scripting find

我目前有这个脚本:

find . -name '*.log' -print0 | xargs -0 tar zcf $file
Run Code Online (Sandbox Code Playgroud)

收集所有“*.log”文件。我想修改它以包含所有“.txt”文件,但我不知道如何,这应该相当简单吧?

Ste*_*n D 9

有多种方法可以更改您的查找命令。这是一个:

find . \( -name '*.log' -o -name '*.txt' \) -print0
Run Code Online (Sandbox Code Playgroud)

-o是OR运算符,因此,如果第一条件失败,则第二条件被检查。如果你有 GNU find,你也可以使用恰当命名的-or. 请注意,如果第一个表达式成立,则不会评估第二个表达式。


Mic*_*zek 4

如果您使用-regex标志而不是-name可以将名称指定为正则表达式:

find . -regex '.*\.\(log\|txt\)' -print0 | xargs -0 tar zcf $file
Run Code Online (Sandbox Code Playgroud)