使用子进程从 Python 调用复杂的查找命令

使用子进程从 Python 调用复杂的查找命令

我目前正在使用复杂的 find 命令来删除具有特定 MIME 类型的文件。

find -type f -exec bash -c '
  for f; do
    file=$(file -- "$f")
    if [[ $file =~ ^$f:\ "C source" ]]; then
      echo rm -- "$f"
    fi
  done
' bash {} +

我想根据我的要求使用 python 运行以下命令。当我尝试使用子进程调用命令时,我没有任何输出。我不确定这是否是正确的方法,因为我是 Linux 新手。任何帮助,将不胜感激。

from subprocess import call
call('''
find -type f -exec bash -c '
  for f; do
    file=$(file -- "$f")
    if [[ $file =~ ^$f:\ "ASCII text" ]]; then
      echo rm -- "$f"
    fi
  done
' bash {} +

''', shell=True)

目前,我的目录中有一组文件,并且我正在同一目录中运行此 python 脚本。我期待一组文件名作为输出,因为“C 源”几乎没有匹配项

答案1

功能子进程.call()返回一个返回码(零表示成功,非零表示发生了一些错误)。

如果您想要命令输出,请使用该函数subprocess.check_output(...)

PS:你没有考虑过用Python来写吗?标准模块路径库对此非常有用。

相关内容