我有一个find
命令查找名称与提到的多个模式匹配的文件-name
范围
find -L . \( -name "SystemOut*.log" -o -name "*.out" -o -name "*.log" -o -name "javacore*.*" \)
这可以在命令行成功找到所需的文件。我正在寻找的是在 shell 脚本中使用此命令并将其与tar
命令创建所有日志文件的 tar。因此,在脚本中我执行以下操作:
LIST="-name \"SystemOut*.log\" -o -name \"*.out\" -o -name \"*.log\" -o -name \"javacore*.*\" "
find -L . \( ${LIST} \)
这不会打印我正在查找的文件。
首先 - 为什么这个脚本不能像命令一样运行?一旦完成,我可以将其与cpio
或类似的创建一个tar
一击?
好像find
无法匹配*
来自未加引号的变量的模式。这个语法对我有用(使用 bash 数组):
LIST=( -name \*.tar.gz )
find . "${LIST[@]}"
您的示例将如下所示:
LIST=( -name SystemOut\*.log -o -name \*.out -o -name \*.log -o -name javacore\*.\* )
find -L . \( "${LIST[@]}" \)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)