(こんにちは皆さん!ここに初めて文を載せるので、皆さんに特に挨拶します。)
.webpや.pngイメージなどのフォルダやサブフォルダのMIMEタイプに基づいてファイルを削除するコマンドを使用したいと思います。私のコンピューティングの知識はほぼゼロですが、拡張機能に基づいて削除しました。
まず、目的のフォルダに移動します。
cd /my-folder
それから:
find \( -iname "*.webp" -o -iname "*.png" \) -print0 | xargs -0 rm -f
誰かがすでに別のフォーラムで回答していて、コマンドは機能しますが、70個のファイルに対して10秒ほど遅くて使用できません。
while read -d '' Fichier
do
MimeType=$(mimetype --output-format %m "$Fichier")
[[ "${MimeType}" == @(image/webp|image/png) ]] && echo rm "$Fichier"
done < <(find . -type f -print0)
これは本当に「簡単な」作業のようです...
ベストアンサー1
exiftool
特定のMIMEタイプで識別されたファイルを報告するために使用できます。
exiftool -q -r. -ext '*' -if '
print "$FilePath\0" if $MIMEType =~ m{^image/(webp|jpeg)$}; 0' . |
xargs -r0 echo rm
(echo
正しく表示されたら削除)
-q
:静かな-r.
:再帰検索(隠しディレクトリを含む)(ディレクトリへのシンボリックリンクに従います!)-ext '*'
:既知の拡張子を持つファイルを制限しないでください。-if 'perl code'
:コードがtrueを返すファイルに関する情報のみを報告します。ここでは、;0
NULで区切られたファイルパスを印刷しようとしてprint
コードを呼び出してこれを行うため、ファイルが選択されないようにreturn falseを追加します。これにより、-if '$MIMEType eq "image/webp"' -s3 -FilePath
改行で区切られたパスが印刷されます。改行はファイルパスのすべての文字と同じくらい有効であるため、後で確実に処理することはできません。
あるいは、exiftool
ファイル自体を削除することもできます。
exiftool -q -r. -ext '*' -if '
if ($MIMEType =~ m{^image/(webp|jpeg)$}) {
print STDERR "Deleting $FilePath\n";
unlink $FilePath or print STDERR "Failed: $!\n";
}
0' .