「ケースの重複」バッチの名前を変更する

「ケースの重複」バッチの名前を変更する

私のLinuxシステムには、他のコンピュータ(一部はWindowsコンピュータ)とクロス同期するフォルダがあります。問題は、フォルダに「重複した大文字と小文字」のファイルがあることです。つまり、1つ以上の文字が大文字と小文字であることを除いて、ファイル名は同じです。これはLinuxシステムでは問題ではありませんが、Windowsシステムでは問題になり、ファイル名が重複するという問題が発生します。

「そのうちの1つに「1」が追加された同じ名前の2つのファイルが作成されている場合は、すべてのファイル名を小文字に変換する」など、これらのファイル名を見つけて置き換える簡単なコマンドライン方法はありますか?

ベストアンサー1

ホイールを再発明したくない場合は、mvコマンドの組み込み機能を使用して自動番号付きバックアップを実行できます。シェルが基本的に大文字と小文字の変換をサポートしている場合は、おそらく簡単です。

for f in *; do mv --backup=numbered -- "$f" "${f,,}"; done

デフォルトのバックアップ番号の形式は.~1~次のとおりです。

SOME FILE  sOmE fIlE  some file

それから

$ for f in *; do mv -v --backup=numbered -- "$f" "${f,,}"; done
‘SOME FILE’ -> ‘some file’ (backup: ‘some file.~1~’)
‘sOmE fIlE’ -> ‘some file’ (backup: ‘some file.~2~’)
mv: ‘some file’ and ‘some file’ are the same file

デフォルトの番号付けが気に入らない場合は、いつでも変更できます。システムにPerlベースのrenameコマンドが含まれている場合は、次のように見えます。

$ rename -v -- 's/\.~(\d+)~/$1/' *.~*~
some file.~1~ renamed as some file1
some file.~2~ renamed as some file2

ついに与えられた

$ ls
some file  some file1  some file2

おすすめ記事