我正在尝试使用子进程模块(python)
执行以下命令/usr/bin/find <filepath> -maxdepth 1 -type f -iname "<pattern>" -exec basename {} \;
但是,它会出现以下错误:
/usr/bin/find: missing argument to `-exec'
我猜这与逃避一些角色有关。但没有得到如何克服这一点。
感谢任何帮助。感谢。
答案 0 :(得分:10)
另一个问题的答案有助于: https://stackoverflow.com/a/15035344/971529
import subprocess
subprocess.Popen(('find', '/tmp/mount', '-type', 'f',
'-name', '*.rpmsave', '-exec', 'rm', '-f', '{}', ';'))
我无法弄清楚的是,分号不需要被转义,因为通常分号是由bash解释的,并且需要被转义。
在bash中,这种平等是:
find /tmp/mount -type f -name "*.rpmsave" -exec rm -f {} \;
答案 1 :(得分:0)
还有一个提示:使用语法r'bla'允许使用反斜杠而不必引用它们:
r'... -exec basename {} \;'
提供更好的可读性。
答案 2 :(得分:-2)
请记住,必须转义"
,并且还需要在\
之前使用;
转义
您的命令可能类似于:
p1 = subprocess.Popen(["/usr/bin/find", "<filepath> -maxdepth 1 -type f -iname \"<pattern>\" -exec basename {} \\;"])
p1.communicate()