Có một lệnh Perlrename
nên thực hiện các mẹo. Coi chừng: có một số lệnh khác nhau được gọi rename
, vì vậy hãy chắc chắn rằng bạn đã có tập lệnh Perl mong muốn perlexpr
là đối số của nó. Đây là rename
lệnh được cung cấp bởi perl
gói trên Debian và các công cụ phái sinh (Ubuntu, Mint, '), nhưng không phải trên các bản phân phối khác có thể có một tiện ích khác được gọi rename
.
martin@martin ~/test % touch a.txt
martin@martin ~/test % touch b.txt
martin@martin ~/test % rename 's/^(prefix)?/prefix/' *.txt
martin@martin ~/test % ll
insgesamt 0
-rw-rw-r-- 1 martin martin 0 Sep 19 23:56 prefixa.txt
-rw-rw-r-- 1 martin martin 0 Sep 19 23:56 prefixb.txt
martin@martin ~/test % rename 's/^(prefix)?/prefix/' *.txt
martin@martin ~/test % ll
insgesamt 0
-rw-rw-r-- 1 martin martin 0 Sep 19 23:56 prefixa.txt
-rw-rw-r-- 1 martin martin 0 Sep 19 23:56 prefixb.txt
Như bạn có thể thấy, đó là idempotent - nó sẽ không thêm tiền tố nữa khi bạn gọi nó nhiều lần.
Nó hoạt động bằng cách thay thế bắt đầu (độ dài bằng không) của chuỗi ( ^
) hoặc bắt đầu theo sau bởi một prefix
chuỗi tùy chọn bằng prefix
.
Tôi sẽ đóng gói cái này trong tập lệnh shell hoặc hàm shell như một bài tập cho bạn :)
Postfix khó hơn một chút, bởi vì bạn phải tìm ra phần nào của tên tệp tạo thành phần mở rộng ...