Tôi sử dụng renametấ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 SEARCHvới REPLACEtrong mỗi tệp (có nghĩa là, *). Có /gnghĩ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à /gihoặ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 renamelà 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 renamecái khác sử dụng các mẫu và không mạnh bằng. prenametừ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.mp3và 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.pdfthà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 .pdfkhớp qPDFtrong khi \.pdfchỉ 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'/gvà s/Search/Replace/gvớ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 -ntù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 -ncờ ở đó. Nếu nó trông ổn, nhấn Upđể quay lại, sau đó xóa -nvà 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 renametheo 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ó