Oli*_*pin 9 bash find recursive quoting wildcards
想象一个源树。到处都有xml文件。
但是由于这棵树的根部有一个 XYZ.xml,它不会找到我的 xml 文件。
find -iname *.xml
Run Code Online (Sandbox Code Playgroud)
返回
./XYZ.xml
Run Code Online (Sandbox Code Playgroud)
代替
./XYZ.xml
./a/b/c/bob.xml
./b/d/top.xml
Run Code Online (Sandbox Code Playgroud)
cjm*_*cjm 19
find -iname '*.xml'
Run Code Online (Sandbox Code Playgroud)
否则,您的 shell 将扩展*.xml
为XYZ.xml
,而实际执行的命令是
find -iname XYZ.xml
Run Code Online (Sandbox Code Playgroud)
如果当前目录中没有 XML 文件,它起作用的原因是,如果通配符不匹配任何内容,shell 通常会保留未扩展的通配符。在一般情况下,你想通配符的任何时间比外壳以外的程序扩展(如通过find
,tar
,scp
,等),你需要说出来了这样的外壳不会尝试扩展它们本身。
你需要像这样引用你的论点:
find ./ -name '*.xml'
Run Code Online (Sandbox Code Playgroud)
以便它被传递给 find 而不是被 shell 扩展,然后作为扩展版本传递给 find。
归档时间: |
|
查看次数: |
3891 次 |
最近记录: |