it-swarm-id.com

Bagaimana cara mengganti nama semua file menjadi huruf kecil?

Saya punya misalnya TREE.wav, ONE.WAV. Saya ingin mengubah nama menjadi tree.wav, one.wav. Bagaimana cara mengganti nama semua file menjadi huruf kecil? 

98
Voloda2

Jika Anda merasa nyaman dengan terminal:

  1. Buka Terminal.app, ketik cd dan kemudian seret dan letakkan Folder yang berisi file yang akan diganti namanya ke dalam jendela.
  2. Untuk mengonfirmasi bahwa Anda berada di direktori yang benar, ketik ls dan tekan enter.
  3. Rekatkan kode ini dan tekan enter:

    for f in *; do mv "$f" "$f.tmp"; mv "$f.tmp" "`echo $f | tr "[:upper:]" "[:lower:]"`"; done
    
  4. Untuk mengonfirmasi bahwa semua file Anda lebih kecil, ketik ls dan tekan enter lagi.

(Terima kasih kepada @bavarious di Twitter untuk beberapa perbaikan, dan terima kasih kepada John Whitley di bawah ini untuk membuat ini lebih aman pada sistem file yang case-insensitive.)

321
wjl

Pertanyaan yang diajukan adalah pertanyaan umum, dan juga penting, jadi saya ingin memberikan jawaban yang lebih umum:

Kasing paling sederhana (sebagian besar aman, dan di Mac OS X, tetapi baca terus):

for i in * ; do j=$(echo "$i" | tr '[:upper:]' '[:lower:]') ; mv "$i" "$j" ; done

Anda juga perlu menangani spasi di nama file (OS apa saja):

IFS=$'\n' ; for i in * ; do j=$(echo "$i" | tr '[:upper:]' '[:lower:]') ; mv "$i" "$j" ; done

Anda perlu menangani nama file yang berbeda hanya berdasarkan kasus dalam sistem file case-sensitive dan tidak menimpa target (mis. Linux):

for i in * ; do j=$(echo "$i" | tr '[:upper:]' '[:lower:]') ; [ -e "$j" ] && continue ; mv "$i" "$j" ; done 

Catatan tentang Mac OS X:

Sistem file Mac peka terhadap huruf besar-kecil, pelestarian huruf besar-kecil.

Namun, tidak perlu membuat file sementara, seperti yang disarankan dalam jawaban dan komentar yang diterima, karena dua nama file yang berbeda hanya berdasarkan kasus tidak dapat ada di tempat pertama, ref .

Untuk menunjukkan ini:

$ mkdir test
$ cd test
$ touch X x
$ ls -l 
total 0
-rw-r--r--  1 alexharvey  wheel  0 26 Sep 20:20 X
$ mv X x
$ ls -l 
total 0
-rw-r--r--  1 alexharvey  wheel  0 26 Sep 20:20 x
0
Alex Harvey