không có dĩa:
ls | perl -lne '$suf=substr($_,6); rename $_, "XXXXX-$suf"'
Khi bạn sử dụng vòng lặp shell, các mv
dĩa một lần cho mỗi tệp. Perl củarename
Lệnh thì không.
(Lệnh đổi tên của Perl có một số hạn chế, nhưng trong trường hợp cụ thể này, những hạn chế đó không được áp dụng.)
Đối với rename
lệnh được hiển thị trước đó, có, nó hoạt động, nhưng sau đó bạn có tất cả sự nhầm lẫn giữa hai loại đổi tên khác nhau và vân vân. Nếu bạn có đúng, tuyệt vời, nhưng nếu không, điều này cũng hoạt động.
Nếu bạn không có lệnh perl-rename và không thể cài đặt nó, bạn có thể làm điều này:
ls | perl -lne '$old=$_; s/(\w+)/XXXXX/; rename $old, $_'
Như bạn có thể thấy, điều này sử dụng cùng một sự thay thế được hiển thị trong câu trả lời hàng đầu. Tất nhiên perl-đổi tên có chuông và còi khác (câu trả lời đầu đã đề cập, -n
đã có, sau đó có -0
, -f
và vân vân), và nhiều trong số họ bạn cần, bạn càng nên cài đặt thay vì cán của riêng bạn theo cách này .
rename
. Tôi cho rằng đây là của Larry Wallrename
, từrename
gói trong Debian và phái sinh (và IIRCprename
trên các hệ thống thuyết phục RedHat). Một công cụ rất hữu ích.