私はそれが尋ねられたことを知っていますが、私が見つけたものは今のところうまくいきません。私が来たクローゼットはこれです:rename -n 'y[A-Z]/[a-z]/' *
これは現在のディレクトリで機能します。私はLinuxターミナルがあまり得意ではないので、このコマンドに何を追加して、私が所属するすべてのサブディレクトリ内のすべてのファイルに適用する必要があります。ありがとうございます。
17011 次
2 に答える
34
find
andを使用する1つの方法は次のtr
とおりです。
for i in $(find . -type f -name "*[A-Z]*"); do mv "$i" "$(echo $i | tr A-Z a-z)"; done
編集; 追加した:-name "*[A-Z]*"
これにより、大文字のファイルのみが確実に検出されます。たとえば、小文字のみのファイルが見つかって同じファイルに移動したmv
場合、エラーが表示されare the same file
ます。
于 2012-10-24T15:02:22.137 に答える
10
Perlには、より適切に機能する可能性のあるロケール対応lc()
関数があります。
find . -type f | perl -n -e 'chomp; system("mv", $_, lc($_))'
このスクリプトはファイル名の空白を処理しますが、改行は処理しないことに注意してください。また、「ASDF.txt」と「asdf.txt」がある場合、衝突に対する保護はありません。
于 2012-10-24T16:10:44.983 に答える