GNU/Linux >> Linux の 問題 >  >> Linux

Linux でファイル名を大文字に変更

bash シェルには、変数名をすべて大文字に変換するための構文があります。

for file in * ; do      # or *.jpg, or x*.jpg, or whatever
    mv "$file" "${file^^}"
done

この機能は bash バージョン 4.0 で導入されたので、最初に bash のバージョンを確認してください。 実装します。 mv を差し替えて一度試してみてください。 echo mv まで 、それがあなたが望むことをすることを確認するためだけです.

この機能のドキュメントはこちら、または info bash と入力してください 「upper」を検索してください。

おそらく、ターゲット ファイルが既に存在する場合の対処方法を決定する必要があります (たとえば、両方の x00000.jpg の場合)。 と X00000.JPG 既に存在します)、それが問題ではないことが確実でない限り。このような名前の競合を検出するには、以下を試してください:

ls *.txt | tr '[a-z]' '[A-Z]' | sort | uniq -c | sort -n

1 で始まらない行を探します .


rename

おそらく、複数のファイルの名前を変更する最も簡単な方法は、Perl の rename を使用することです。 .小文字の名前を大文字に変換するには:

rename 'y/a-z/A-Z/' *

ファイルがサブディレクトリにもある場合は、globstar または find を使用できます :

find . -maxdepth 1 -type f -iname "*.jpg" -execdir rename "y/a-z/A-Z/" {} +

参考文献

  • ハウツー:Linux がシェル プロンプトで複数のファイルの名前を変更する – nixCraft
  • y/ に関する詳細情報 s の代わりに翻訳 代用。
  • DistroTube - Linux でファイルの名前を変更するためのツール

for f in * ; do mv -- "$f" "$(tr [:lower:] [:upper:] <<< "$f")" ; done

Bash にはファイルの名前を変更するための組み込みコマンドがないため、Bash からのみファイルの名前を変更することはできません。そのためには、少なくとも 1 つの外部コマンドを使用する必要があります。

Perl が許可されている場合:

perl -e 'for(@ARGV){rename$_,uc}' *.jpg

Python が許可されている場合:

python -c 'import os, sys; [os.rename(a, a.upper()) for a in sys.argv[1:]]' *.jpg

数千以上のファイルがある場合、上記のソリューションは高速ですが、以下のソリューションは著しく遅くなります。

AWK の場合、lsmv 許可されています:

# Insecure if the filenames contain an apostrophe or newline!
eval "$(ls -- *.jpg | awk '{print"mv -- \x27"$0"\x27 \x27"toupper($0)"\x27"}')"

*.jpg のため、ファイルがたくさんある場合、上記の解決策は機能しません。 展開すると引数リストが長すぎます (エラー:引数リストが長すぎます ).

tr の場合 と mv 許可されている場合は、damienfrancois の回答を参照してください。

mv の場合 許可されています:

for file in *; do mv -- "$file" "${file^^}"; done

これらは .jpg の名前を変更することに注意してください .JPG まで


Linux
  1. Linuxで一度に複数のファイルの名前を変更する方法

  2. パターンに従ってLinuxで多くのファイルの名前を変更する

  3. Linux で複数のファイルのファイル名の一部を削除する

  1. Linuxでファイルの名前を変更する方法

  2. Linux で大量の BMP ファイルを JPEG に変換する

  3. Linuxで正規表現を使用してファイルの名前を変更する

  1. 3 つの方法を使用して Linux で複数のファイルの名前をまとめて変更する方法

  2. Linux で複数のファイルを見つけて名前を変更する

  3. Linuxでファイルの名前を再帰的に変更する(拡張子を変更する)