shr*_*thi 3 python subprocess find
我正在尝试使用子进程模块(python)执行以下命令
/usr/bin/find <filepath> -maxdepth 1 -type f -iname "<pattern>" -exec basename {} \;
Run Code Online (Sandbox Code Playgroud)
但是,它会出现以下错误:
/usr/bin/find: missing argument to `-exec'
Run Code Online (Sandbox Code Playgroud)
我猜它与逃避一些角色有关.但没有得到如何克服这一点.
任何帮助表示赞赏.谢谢.
isa*_*clw 11
另一个问题的答案有所帮助:https: //stackoverflow.com/a/15035344/971529
import subprocess
subprocess.Popen(('find', '/tmp/mount', '-type', 'f',
'-name', '*.rpmsave', '-exec', 'rm', '-f', '{}', ';'))
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚的是,分号不需要被转义,因为通常分号由bash解释,并且需要被转义.
在bash中,这种平等是:
find /tmp/mount -type f -name "*.rpmsave" -exec rm -f {} \;
Run Code Online (Sandbox Code Playgroud)
ava*_*sal -2
记住转义是必需的,之前使用过的"转义也是必需的\;
你的命令可能类似于:
p1 = subprocess.Popen(["/usr/bin/find", "<filepath> -maxdepth 1 -type f -iname \"<pattern>\" -exec basename {} \\;"])
p1.communicate()
Run Code Online (Sandbox Code Playgroud)