web-dev-qa-db-ja.com

すべてのサブディレクトリでUbuntuのファイル名を小文字に変更します

私はそれが尋ねられたことを知っていますが、私が見つけたものは今のところうまくいきません。私が来たクローゼットはこれです:rename -n 'y[A-Z]/[a-z]/' *これは現在のディレクトリで機能します。私はLinuxターミナルが苦手なので、このコマンドに何を追加して、所属するすべてのサブディレクトリ内のすべてのファイルに適用する必要があります。ありがとうございます。

22
Naterade

findtrを使用する1つの方法は次のとおりです。

for i in $(find . -type f -name "*[A-Z]*"); do mv "$i" "$(echo $i | tr A-Z a-z)"; done

編集;追加:-name "*[A-Z]*"

これにより、大文字のファイルのみが確実に検出されます。たとえば、小文字のみのファイルが見つかって同じファイルに移動した場合、mvare the same fileエラーを表示します。

34
Steve

Perlには、ロケール対応のlc()関数があります。

find . -type f | Perl -n -e 'chomp; system("mv", $_, lc($_))'

このスクリプトはファイル名の空白を処理しますが、改行は処理しないことに注意してください。また、「ASDF.txt」と「asdf.txt」がある場合、衝突に対する保護はありません。

10
Andy Ross