ファイル名を自動的に増やします。

ファイル名を自動的に増やします。

いくつかの重複ファイルを収集する必要があり、名前の競合を避けたいです。問題は、ファイルがクリーンアップされる前にスクリプトを再実行してこのファイルのコレクションを追加することができ、引き続き数字を増やすことです。

私は以下のように数字を増やすために単純なUntilループを使用することにしました。

until [[ ! -f ${PWD}/DUPES/${num}-$1 ]]; do
num=$((num +1))
done
mv --no-clobber $1 ${PWD}/DUPES/${num}-$1

極端な場合、ファイルが1kを超えるとは想像できません。だから私の質問は...

これはこれを達成するための非常に非効率的な方法ですか?そこから増加する最も高い先行数を得るために既存のファイルを解析する必要がありますか、それとも私が提示した極端な例には問題ありませんか?それとももっと良い方法がありますか?

ベストアンサー1

GNU mvには--backup便利なオプションがあります。次の対話は、ターゲットが存在するときにファイル名を変更する方法を示しています。

$ touch a b c o
$ mv --backup=numbered --verbose a o
`a' -> `o' (backup: `o.~1~')
$ mv --backup=numbered --verbose b o
`b' -> `o' (backup: `o.~2~')
$ mv --backup=numbered --verbose c o
`c' -> `o' (backup: `o.~3~')

この例では、元のファイルの名前が、to、to、およびtooに変更されました。したがって、公開したコードと同じ方法で名前を変更することはありませんが、特定の要件に応じて許可される可能性があります。o.~1~ao.~2~bo.~3~co

おすすめ記事