我目前正在使用复杂的 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来写吗?标准模块路径库对此非常有用。