如何在xonsh中为find命令正确使用-exec、-execdir参数?
报错原因
- 第一个
SyntaxError报错:{}是xonsh默认的Python插值语法占位符,未加引号直接写{}会被xonsh识别为要插入Python表达式,和find命令本身的{}参数语法冲突,导致语法解析失败。 - 第二个
find: missing argument to-execdir'报错:给{}加单引号解决了插值冲突,但末尾的;没有被xonsh正确解析为单个;字符传递给find,-exec/-execdir要求必须以;`作为命令终止符,find没收到终止符就会提示缺少参数。
正确写法
最稳妥的方案是同时把{}和终止符;用单引号包裹,避免被xonsh的特殊语法解析:
find @(str(path)) -iname "log.txt" -execdir pwd '{}' ';'
如果需要执行更复杂的命令,也可以将整条find命令交给bash子进程执行:
bash -c @(f"find {str(path)} -iname 'log.txt' -execdir pwd {{}} \\;")
内容的提问来源于stack exchange,提问作者MountainX
相关产品推荐
相关产品推荐

