サブプロセスを使用してPythonで複雑な検索コマンドを呼び出す

サブプロセスを使用してPythonで複雑な検索コマンドを呼び出す

現在、特定のMIMEタイプのファイルを削除するために複雑なfindコマンドを使用しています。

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

機能サブプロセス。呼び出し()返す戻りコード(0は成功を意味し、0以外の場合はエラーが発生したことを意味します。)

コマンド出力が必要な場合は、この機能を使用してください子プロセス.check_output(...)

PS:Pythonで書くことを検討していませんか?標準モジュールパスライブラリこれに非常に便利です。

おすすめ記事