Batch đổi tên qua dòng lệnh?


2

Tôi có một máy chủ Media Temple (dv) mà tôi đang cài đặt Magento.

Tôi đã tải lên một vài nghìn hình ảnh vào thư mục / media / import mà khách hàng đã cung cấp cho tôi. Vấn đề là, một số hình ảnh là .jpg và những hình ảnh khác là .JPG.

Có cách nào để đổi tên hàng loạt trên máy chủ không? Tôi thực sự không muốn phải làm điều đó tại địa phương và tải lên lại tất cả.

Tôi lý tưởng sẽ làm cho tất cả chúng viết thường để chúng đồng nhất với các sơ đồ đặt tên hình ảnh khác được sử dụng bởi Magento.

Cảm ơn,

Daniel

Câu trả lời:


3

Một gợi ý bash:

   for file in *.JPG; do newfile=`echo $file|sed 's/.JPG$/.jpg/'` ; mv -i "$file" "$newfile" ; done

Nó lặp trên tất cả các tệp có phần mở rộng .JPG và đối với mỗi tệp, nó sử dụng sed để xây dựng tên tệp mới bằng cách biến terminal .JPG thành terminal .jpg và thực hiện mv. Đây -ichỉ là trong trường hợp bạn có fred.JPG fred.jpg. Đừng quên phân biệt giữa trích dẫn đơn và backticks, cả hai đều được sử dụng và không thể thay thế cho nhau.


2
Hoặc sử dụng ưu tiên $(). Ngoài ra, các biến chứa tên tệp phải luôn được trích dẫn trong trường hợp có khoảng trắng trong tên.
Dennis Williamson

Dennis hoàn toàn đúng, tôi nên nghĩ về điều đó, và đã sửa đổi những điều trên cho phù hợp. Mặt khác, tên tệp có khoảng trắng là một quang sai và dù sao cũng nên tránh! (ý kiến! ý kiến!)
MadHatter

Tôi có nên chạy cái này từ trong thư mục bằng Terminal không?
dannymcc

@dannymcc: Vâng. MadHatter: Hình ảnh và âm nhạc là hai trong số các loại tệp mà người ta mong đợi có khoảng trắng trong tên của chúng.
Dennis Williamson

1

Nếu bạn có tiện ích được gọi là renamecài đặt (đó là tập lệnh Perl), bạn có thể thực hiện:

rename 'y/A-Z/a-z/' *
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.