
現在、特定の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で書くことを検討していませんか?標準モジュールパスライブラリこれに非常に便利です。