【发布时间】:2019-01-05 02:50:10
【问题描述】:
我想运行以下代码:
find 2017_01_04/* -maxdepth 1 -mindepth 1 -type f -exec sh -c\
'file -i $1\ | awk "{/video|audio/} {print \$1}" ' _ {} \; -print0 | \
while read -d $'\0' -r i
echo $i
done
file -i 命令的输出是:
20170115_202630: image/jpeg; charset=binary
20170115_202630.jpg: image/jpeg; charset=binary
20171006_204647000_iOS.MOV: video/quicktime; charset=binary
Ei*foto.jpg: image/jpeg; charset=binary
err-organiza_fotos (cópia).log: text/plain; charset=utf-8
err-organiza_fotos.log: text/plain; charset=utf-8
err-organiza_fotos (outra cópia).log: text/plain; charset=utf-8
上面的命令运行良好!但是当在find ... -exec sh -c '... | awk ...' _ {} \; -print0 | while ...; do ...; done 内部时不起作用。尝试了我所知道的一切,没有成功。
file -i * | awk -F ":" '/image|video/ {print $1}'
我的目标是能够查找文件并仅选择特定类型的文件,而不必检查扩展名,因为例如存在没有扩展名的图像文件。而且我必须使用 find,因为它可以更好地处理具有不同名称的文件,例如 ./ASD '[]ª\.*。最后,我想要一个命令中的所有内容,我知道使用 awk 和 find 的力量是可能的。
【问题讨论】: