我想查找几个文件名,有时在我的输入中指定通配符。下面是我所拥有的简化。假设v数组将从文件或其他任何东西生成
#!/bin/bash
from_date=2020-05-17
to_date=2020-06-17
v=('-name "*a*"' '-o' '-name "*b*"')
find . "${v[@]}" -newermt "$from_date" ! -newermt "$to_date"
Run Code Online (Sandbox Code Playgroud)
这会产生错误:
find: unknown predicate `-name "*a*"'
有什么办法可以让它发挥作用吗?
这个想法是对的,但第一个参数的引用不是。当你这样做时'-name "*a*"',shell 将它保留为一个单词,从数组的角度来看“完全”很好。但是findcommand 需要一个名为-name而不是 的谓词-name "*a*"。
使用带引号的扩展,您可以让 shell 将单词-name "*a*"作为find它不喜欢的命令选项之一传递。将参数的引用分开,以便它们单独传递。
v=('-name' '*a*' '-o' '-name' '*b*')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
40 次 |
| 最近记录: |