Tôi sử dụng rename
tất cả thời gian. Nó khá đơn giản, nhưng hy vọng bạn biết regex cơ bản:
rename "s/SEARCH/REPLACE/g" *
Điều này sẽ thay thế chuỗi SEARCH
với REPLACE
trong mỗi tệp (có nghĩa là, *
). Có /g
nghĩa là toàn cầu, vì vậy nếu bạn có một SEARCH_SEARCH.jpg
, nó sẽ được đổi tên REPLACE_REPLACE.jpg
. Nếu bạn không có /g
, nó sẽ chỉ thực hiện thay thế một lần, và do đó bây giờ được đặt tên REPLACE_SEARCH.jpg
. Nếu bạn muốn không phân biệt chữ hoa chữ thường, hãy thêm /i
(đó sẽ là /gi
hoặc /ig
ở cuối).
Với các biểu thức thông thường, bạn có thể làm nhiều hơn nữa.
Lưu ý rằng đây rename
là lệnh prename
(còn gọi là Perl rename
), hỗ trợ các biểu thức chính quy Perl hoàn chỉnh. Có một rename
cái khác sử dụng các mẫu và không mạnh bằng. prename
từng được cài đặt theo mặc định trên Ubuntu (cùng với Perl), nhưng bây giờ bạn có thể phải làm:
sudo apt install rename
Đây là vài ví dụ:
Tiếp đầu ngữ
Thêm :
rename 's/^/MyPrefix_/' *
document.pdf
đổi tên thành MyPrefix_document.pdf
Xóa :
Ngoài ra, bạn có thể loại bỏ các chuỗi không mong muốn. Giả sử bạn có 20 tệp MP3 có tên như thế CD RIP 01 Song.mp3
và bạn muốn xóa phần "CD RIP" và bạn muốn xóa tệp đó khỏi tất cả chúng bằng một lệnh.
rename 's/^CD RIP //' *
CD RIP 01 Song.mp3
đến 01 Song.mp3
Lưu ý không gian thừa trong '^CD RIP '
, không có không gian, tất cả các tệp sẽ có khoảng trắng là ký tự đầu tiên của tệp. Cũng lưu ý, điều này sẽ hoạt động mà không có ^
ký tự, nhưng sẽ khớp với CD RIP
bất kỳ phần nào của tên tệp. Các ^
đảm bảo nó chỉ loại bỏ các ký tự nếu chúng là phần đầu của tệp.
Hậu tố
Thêm :
rename 's/$/_MySuffix/' *
document.pdf
đổi tên thành document.pdf_MySuffix
Thay đổi :
rename 's/\.pdf$/.doc/' *
sẽ đổi Something.pdf
thành Something.doc
. (Lý do của dấu gạch chéo ngược là, .
là một ký tự đại diện trong regrec vì vậy .pdf
khớp qPDF
trong khi \.pdf
chỉ khớp với chuỗi chính xác .pdf
. Cũng rất quan trọng cần lưu ý, nếu bạn không quen với BASH, bạn phải đặt dấu gạch chéo ngược trong dấu ngoặc kép SINGLE! hoặc sử dụng dấu ngoặc kép hoặc bash sẽ cố gắng dịch chúng. Để bash \.
và "\."
bằng .
. (Nhưng dấu ngoặc kép và dấu gạch chéo ngược được sử dụng, ví dụ "\ n" cho một dòng mới, nhưng vì đó "\."
không phải là một chuỗi thoát ngược hợp lệ, nên nó dịch sang .
)
Trên thực tế, bạn thậm chí có thể đặt các phần của chuỗi trong dấu ngoặc kép thay vì toàn bộ: 's/Search/Replace/g'
giống như s/'Search'/'Replace'/g
và s/Search/Replace/g
với BASH. Bạn chỉ cần cẩn thận về các ký tự đặc biệt (và khoảng trắng).
Tôi đề nghị sử dụng -n
tùy chọn khi bạn không tích cực, bạn có các biểu thức chính quy chính xác. Nó cho thấy những gì sẽ được đổi tên, sau đó thoát ra mà không làm điều đó. Ví dụ:
rename -n s/'One'/'Two'/g *
Điều này sẽ liệt kê tất cả các thay đổi mà nó đã thực hiện, nếu bạn không đặt -n
cờ ở đó. Nếu nó trông ổn, nhấn Upđể quay lại, sau đó xóa -n
và nhấn Enter(hoặc thay thế nó -v
để xuất ra tất cả các thay đổi mà nó thực hiện).
Lưu ý : Các phiên bản Ubuntu trên 17.04 không được gửi kèm rename
theo mặc định, tuy nhiên nó vẫn có sẵn trong kho. Sử dụng sudo apt install rename
để cài đặt nó