Tôi có một tập lệnh bash mà tôi đang cố gắng thay thế các dấu chấm trong tên tệp và thay thế chúng bằng dấu gạch dưới, giữ nguyên phần mở rộng (Tôi đang ở trên Centos 6 btw). Như bạn có thể thấy từ đầu ra bên dưới, tập lệnh hoạt động khi có một dấu chấm để thay thế, nhưng trong trường hợp dấu chấm duy nhất là phần mở rộng, tập lệnh vẫn cố gắng đổi tên tệp, thay vì bỏ qua nó. Bất cứ ai có thể chỉ ra làm thế nào tôi nên xử lý này tốt hơn? Cảm ơn vì bất kì sự giúp đỡ.
Kịch bản (bị lỗi) của tôi:
#!/bin/bash
for THISFILE in *
do
filename=${THISFILE%\.*}
extension=${THISFILE##*\.}
newname=${filename//./_}
echo "mv $THISFILE ${newname}.${extension}"
#mv $THISFILE ${newname}.${extension}
done
Đầu vào mẫu:
1.3MN-Pin-Eurotunnel-Stw505.51.024-EGS-130x130.jpg
Wear-Plates.jpg
Đầu ra:
mv 1_3MN-Pin-Eurotunnel-Stw505_51_024-EGS1-130x130.jpg 1_3MN-Pin-Eurotunnel-Stw505_51_024-EGS1-130x130.jpg
mv Wear-Plates_jpg.Wear-Plates_jpg Wear-Plates_jpg.Wear-Plates_jpg
tar.gz
các tập tin? Bạn sẽ muốn họ giải quyếtfile.tar.gz
, khôngfile_tar.gz
.