プロパティに基づいてビデオファイルをソート/検索する方法は?


1

これはユニークな状況です

パーティションに500以上の映画があります。私がやりたかったのは、Property Video Dimensionに基づいてムービーファイルを検索し、720p HD未満のすべてのものを削除して、他のもののためのスペースを作ることです。

nautilusの検索オプションは、日付またはファイルタイプで検索できますが、プロパティでは検索できません。私が使用できる別のアプリケーションはありますか?またはコマンド?またはNautilus-Script

ビデオの次元を強調する

更新

find . -name '*.mkv' -exec exiftool -fileName -imageSize {} \; 

このコマンドは期待どおりに動作しますが、このコマンドでもう少しやることが必要です。ExifToolの仕組みがわからないので変更できません

単一のコマンドで複数のファイル拡張子を追加できますか? ほとんどのファイルはありますがmkv、含まれていますmp4 flv。これらすべてのビデオ拡張機能をスキャンする単一のコマンドで多くの作業を節約できます

ここに画像の説明を入力してください

(サブフォルダーの数を参照してください)


askubuntu.com/questions/249828/…との組み合わせを使用findgrepます。
ムル

@muru私はその質問を読みました、私の初心者のubuntuの心はそれができることを把握できましたが、それはまだ私には本当に不明瞭です、このためのノーチラススクリプトはありますか?他のファイルマネージャーを使用したくないので
Sumeet Deshmukh

これは、正しい方向にあなたを導くかもしれませんunix.stackexchange.com/questions/85949/…-
バート

@bart exiftoolは動作しましたが、いくつかの小さな問題があります。私は、それに応じて助けに感謝し、質問を更新しました
Sumeetデシュムク

@muruで述べたように、ツールの組み合わせを使用してツール間で出力をパイプする必要があります。ファイルシステムでrmを実行しようとすると壊滅的な影響が生じるため、簡単な解決策はありません。あなたは「>」で出力をファイルにドロップすることができ、「男のexiftool」にすると、すべてのファイルのパイプを取得するために「男を見つける」を使用
BART

回答:


2

拡張された再帰的なグロビングを有効にします。

shopt -s extglob globstar

次に:

exiftool -q -p '$FileName $ImageSize' **/+(*.mp4|*.mkv|*.flv)

**サブディレクトリに再帰します。拡張グロブ+(*.mp4|...)は、内のパターンの少なくとも1つに一致し()ます。

grepを使用して出力を処理し、ファイルのリストを生成することはできません1920x1080

exiftool -q -p '$Directory/$FileName $ImageSize' **/+(*.mp4|*.mkv|*.flv) |
  grep -v ' 1920x1080$'

ここの変更に注意してください:私はを使用してい$Directory/$FileName $Imagesizeます。ファイル名だけでなく、ファイルへのパスが必要$Directory/$Filenameです。そして、ここで、各行が1920x1080(grepでは一致を反転させて$、行末です)で終わっていないかどうかを確認し-vます。出力を確認します

これで、これらのファイルを削除できます。

exiftool -q -p '$Directory/$FileName $ImageSize' **/+(*.mp4|*.mkv|*.flv) |
  grep -v ' 1920x1080$' | sed 's: [^ ]*$::' |
  xargs -d '\n' rm

sed 's: [^ ]*$::'は、最後から行末までのすべてを削除するので、AxBの出力からの解像度exiftoolは削除され、ファイル名のみが保持されます。次にxargs rm、各行をファイル名として受け取りrm、それらを引数として実行します。

完了したら、グロビングオプションを無効にします。

shopt -u globstar globstar

複数の解像度を除外するには、でORを使用しますgrep

grep -Ev ' (1920x1080|1920x820|1280x544)$'

これは、広く使用されているすべてのビデオ形式のコマンドです

exiftool -q -p '$Directory/$FileName $ImageSize' **/+(*.mp4|*.mkv|*.flv|*.avi|*.webm|*.vob|*.mov|*.wmv|*.amv|*.m4p|*.m4v|*.mpeg|*.mpv|*.m4v|*.3gp)

これは、(ほぼ)すべてのHDビデオ形式を除外するコマンドです

grep -Ev ' (1920x1080|1920x1040|1920x1068|1906x952|1916x808|1920x808|1920x804|1916x812|1600x864|1436x1080|1920x820|1280x544|1920x800|1920x802|1920x816|1856x1080|1920x1072|1920x1056|1280x720|1280x536|1280x560|1280x538|1280x528|1216x544|1280x534|1280x532|1281x534|1278x714|1280x718|1280x688|1278x682|1280x690|1280x694|1280x660|1282x692|1280x692|1285x696|1278x544|1280x696|1279x718|1280x546|1281x546|960x720|1324x552|1305x552|1308x552|1536x640)$'

ナイスなもの、とてもシンプル:)
バート

複数の解像度も除外できますか?例えばのために1920x8161920x8201280x544 、私はHDとして、または上記に定義することができますすべての解像度について話しています。私はそれらを保持したい(私はおそらく停止する必要があります、私はますます多くを求めています)
スメエトDeshmukh

試してみただけで機能しました(以前は試してみませんでした)。少なくとも2つの解像度を除外するコードで回答を更新できる場合、他のすべてを自分で追加できます。あなたができないなら、それでもいいです、私はこれで生きることができます!Linuxは素晴らしいです、私はその答えupvoteてみましょう
Sumeetデシュムク

@SumeetDeshmukh更新を参照してください。
ムル

@muruに感謝し、再び125Gbを削除しました
Sumeet Deshmukh
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.