Berikan semua file ekstensi .jpg


8

Saya memiliki direktori dan beberapa ekstensi file dalam huruf besar (.JPG), bukan huruf kecil.

Saya ingin memastikan setiap file memiliki .jpg sebagai ekstensi. Bagaimana saya melakukan ini dari prompt shell?


Sayang sekali linux tidak memiliki AppleScript.
gadgetmo

2
Sangat luar biasa sehingga Linux tidak memiliki AppleScript.
matematika

Jawaban:


15

Menggunakan Shell Parameter Expansion :

for f in *.JPG; do
    mv "${f}" "${f%%.JPG}.jpg"
done

The "karakter akan mengurus nama file yang mengandung spasi, foto-foto sering.


5
+1 Solusi ini berfungsi bahkan jika Anda memiliki spasi di nama file, tetapi yang Anda maksud "$ f" bukan "f".
Adam Zalcman

Ekspansi Parameter Shell agak samar, orang bisa menggunakan nama samaran: untuk f di * .JPG; do mv "$ f" "` basename $ f .JPG`.jpg "; selesai
matematika

@math: Saya lebih suka versi saya karena berfungsi dengan nama file yang mengandung spasi dan juga akan bekerja dengan /path/to/*.JPG. Anda dipersilakan untuk mengirimkan jawaban Anda sendiri, tentu saja :)
Johnsyweb

Tentu saja nama dasar akan menghapus direktori terkemuka tetapi akan bekerja dengan spasi di dalam nama file. (Saya tidak berpikir ini layak jawaban;) jadi saya mempostingnya sebagai komentar)
matematika

10

Jika Anda dapat menggunakan alat eksternal (tidak hanya bash), periksa renameperintah!

rename .JPG .jpg *

Itu renameadalah bagian dari util-linux.


ganti nama adalah ... bermasalah. Ada versi ganti nama yang datang dengan perlyang menerima argumen berbeda untuk melakukan hal yang sama.
cha0site

Bisakah Anda jelaskan lebih banyak? Versi BTW yang mana?
matematika

3

Jika Anda memiliki spasi dalam nama file:

for f in *.JPG; do [[ -f "${f}" ]] && mv "${f}" "${f/%JPG/jpg}"; done

2

Saya menyarankan untuk melihat mmvperintah. Ini cocok untuk tugas semacam ini. Dalam skenario Anda, itu akan menjadi:

#> mmv "*.JPG" "#1.jpg"

The man page penuh dengan contoh, sehingga tidak membutuhkan waktu untuk terbiasa.

Pada sistem Debian dapat diinstal dengan:

#> aptitude install mmv

0

jika Anda tidak memiliki spasi di nama file:

for f in *.JPG; do mv $f `echo $f | sed 's/JPG$/jpg/'`; done

1
Akan cukup mudah untuk membuat ini berfungsi untuk file dengan spasi di namanya: tambahkan saja tanda kutip ganda di sekitar kedua argumen mv.
Adam Zalcman

Saya tidak punya ruang. Apa yang saya tambahkan untuk mewujudkannya di direktori CURRENT. Saat ini saya mendapatkan kesalahan - mv: tidak bisa stat `* .JPG ': Tidak ada file atau direktori seperti itu
Mark Flint

1
Anda tidak memiliki JPG di sana.
Karoly Horvath
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.