画像があるため、同じサイズの一部のファイルを削除する必要があります。ただし、これらのイメージをすべて削除するのではなく、キューの次のイメージのみを削除します(アルファベット順)。
1.png # 23,5 Kb
2.png # 24,6 Kb
4.png # 24,6 Kb > remove
8.png # 24,6 Kb > remove
16.png # 23,5 Kb
ベストアンサー1
Linuxを使用している場合、またはGNUツールにアクセスできる場合は、次のことができます。
last=-1; find . -type f -name '*.png' -printf '%f\0' | sort -nz |
while read -d '' i; do
s=$(stat -c '%s' "$i");
[[ $s = $last ]] && rm "$i";
last=$s;
done
説明する
last=-1
:変数$last
をに設定します-1
。find . -type f -name '*.png' -printf '%f\0'
:現在のディレクトリで、名前が.png
次に終わるすべてのファイルを探します。ヌル文字。sort -gz
\0
:区切り入力()を数字()でソートします。これにより、ソートされたファイル名のリストが生成されます。-z
-n
while read -d '' i; do
:ファイル名のリストを読みます。 NULLで区切られたデータを正しく処理するために必要な-d ''
フィールド区切り文字を設定します。\0
s=$(stat -c '%s' "$i");
:変数は$s
現在のファイル()のサイズを保持します$i
。[[ $s = $last ]] && rm "$i";
:現在のファイルのサイズが前のファイルと同じ場合は、そのファイルを削除します。last=$s
:$last
現在のファイルのサイズを設定します。次のファイルのサイズが同じ場合、前のステップでそのファイルが削除されます。