Đổi tên hình ảnh theo thứ tự cụ thể


8

Đây là vấn đề của tôi: Tôi có một thư mục có 500 hình ảnh được đặt tên:

1.jpg
2.jpg
3.jpg

và như thế..

Tôi đã sao chép thư mục đó và bây giờ tôi cần đổi tên những hình ảnh tương tự từ 501 thành 1000 nhưng theo thứ tự như sau:

1.jpg  becomes    501.jpg
2.jpg  becomes    502.jpg
3.jpg  becomes    503.jpg          
....

Khi tôi sử dụng lệnh đổi tên tiêu chuẩn của mình:

i=501;for img in $(find . -iname '*.jpg'); do echo -n "Converting $img"; mv $img $i.jpg  && echo $i && ((i++)); done

Nó đặt hàng hình ảnh từ 501 đến 1000 nhưng tất cả chúng đều nằm rải rác:

23.jpg becomes 501.jpg,    
66.jpg becomes 502.jpg 
...   

(chúng theo đúng thứ tự, nhưng nó trộn chúng lên)

Tôi biết đó có thể là một lệnh tôi đang thiếu ...


Sử dụng 2 biến i và j mv $ i.jpg $ j.jpg và tăng các biến của bạn.
Panther

cảm ơn bạn, hy vọng bạn sẽ tìm ra nó. Tôi đã tìm kiếm nhưng không tìm thấy câu trả lời ..
Painkiller

Chỉ tò mò, tên ban đầu, trong phạm vi họ là gì? Số ban đầu chỉ nên được đổi tên + 500?
Jacob Vlijm

Có Jacob bạn +500. Tôi đang cố gắng viết những gì bồ đề nói với tôi nhưng tôi không giỏi lắm trong lnux, tôi đã tự giết mình để viết lệnh đổi tên ở trên: D
Painkiller

Máy tính xách tay nghèo nàn của tôi bị chiếm dụng rất nhiều atm, nhưng nếu không có câu trả lời thỏa mãn nào xuất hiện (mà tôi nghi ngờ :)) và nếu bạn không quản lý, tôi sẽ đăng một kịch bản con trăn nhỏ tối nay.
Jacob Vlijm

Câu trả lời:


7

Hãy thử Thunar , trình quản lý tệp mặc định cho Xfce. Nó rất nhẹ và đi kèm với một công cụ đổi tên hàng loạt tiện dụng. Bạn có thể cài đặt Thunar bằng cách chạy lệnh sau trong Terminal:

sudo apt-get install thunar

Có lẽ bạn cũng sẽ có thể cài đặt từ Phần mềm Ubuntu.

Cách sử dụng tiện ích

  1. Khi bạn đã cài đặt Thunar, hãy khởi chạy tiện ích Đổi tên hàng loạt .
  2. Nhấp vào biểu tượng + và thêm các tệp bạn muốn đổi tên theo thứ tự thích hợp.
  3. Nhấp vào hộp thả xuống ngay bên dưới danh sách các tệp đã chọn và chọn Đánh số . Nhấp vào hộp bên cạnh và chọn Chỉ tên .
  4. Trong hộp " Bắt đầu với: ", nhập 501, để trống ô " Văn bản: ". Bạn sẽ thấy bản xem trước của các thay đổi trong cột Tên mới .
  5. Để áp dụng các thay đổi, nhấp vào nút Đổi tên tệp .

Bên cạnh việc đánh số tiện ích này hỗ trợ các hành động sau:

  • Chèn ngày / giờ
  • Chèn / ghi đè
  • Xóa ký tự
  • Tìm kiếm & Thay thế
  • Chữ in hoa chữ thường

Cảm ơn người đàn ông bạn là MVP! Tôi chỉ phải thêm rằng tôi cũng cần thay đổi định dạng Văn bản thành: Văn bản - Số. (chỉ trong trường hợp có ai khác sử dụng cái này)
Painkiller

2
Để chuyển fm sang ... thực hiện một nhiệm vụ đơn giản có vẻ quá mức đối với tôi. Viết một phần mở rộng tập lệnh nautilus đơn giản mất ít thời gian hơn sau đó chuyển đổi fm.
Jacob Vlijm

1
@JacobVlijm Tôi đang sử dụng Thunar chỉ cho công cụ đổi tên hàng loạt cùng với Nautilus. Thunar khá nhẹ và dường như không gây ra bất kỳ xung đột nào với Nautilus hoặc các trình quản lý tệp khác.
pomsky

4
Nếu bạn không muốn trình quản lý tệp thứ hai, pyrenamerhoạt động hoàn hảo và là thứ tôi sử dụng để đổi tên bunk khi tôi muốn GUI so sánh trước / sau đầu ra.
Tom Brossman

13

Các findlệnh tìm thấy tập tin trong một thư mục khác để ( 23.jpg, 66.jpg, ...). bạn có thể đặt |sortsau khi tìm thấy.

Nhưng phương pháp của bạn là overcomplex.

for i in $( seq 1 500 ) ; do
    j=$(( $i + 500 ))
    mv $i.jpg $j.jpg
done 

3
for i in {1..500}; do ...sẽ có ong dễ dàng hơn.
David Foerster

11

Với renamelệnh.

rename -n 's/^(\d+)/sprintf("%d",$1+500)/e' *.jpg

Hoặc trong thuần bashvà sử dụng mở rộng tham số shell .

for FILE in *.jpg; do
    mv "$FILE" "$(( ${FILE%.jpg}+500 )).jpg" 
done 

5

Nếu tôi hiểu chính xác những gì bạn đang hỏi, tôi nghĩ bạn có thể làm điều đó bằng cách sử dụng công cụ đổi tên mặc định:

rename 's/^(\d+)/sprintf("%d",$1+500)/e' *.jpg -vn

Bạn nên xóa công tắc -vn(dài dòng - không hành động) sau khi thử nghiệm, để thay đổi có hiệu quả.


Làm thế nào một người có thể cài đặt công cụ này trong Ubuntu? theo mặc định renameđược liên kết đến prename(1)từ perlgói không hỗ trợ tất cả các tùy chọn dòng lệnh này.
David Foerster

@DavidFoerster Bạn có thể đúng. Tôi không thể tìm thấy một liên kết cài đặt hiện tại (tôi đã không sử dụng nó từ khoảng năm 2014). Với công cụ đổi tên mặc định, tôi nghĩ nên biểu thức regex 's/^(\d+)/sprintf("%d",$1+500)/e'. Tôi sẽ cập nhật câu trả lời của tôi cho phù hợp. Cảm ơn.
sempaiscuba

1
Câu trả lời của bạn bây giờ là một bản sao của AFSHIN .
David Foerster

@DavidFoerster Xin lỗi, câu trả lời gì? Các câu trả lời khác tôi có thể thấy là bởi pomsky & waltinator. Không sử dụng đổi tên (một trong hai phiên bản).
sempaiscuba

Liên kết trực tiếp đến câu trả lời tôi muốn nói có trong bình luận trước của tôi.
David foerster

0

Một cách khác để đạt được điều này chỉ bằng lệnh shell

đếm = 1; cho i vào ls; làm mv $ i CN $ ((tính ++)). $ {i ## *.}; làm xong

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.