Ok, tôi có một loạt các tệp bắt đầu bằng dấu gạch ngang, -. Điều đó không tốt lắm ... và tôi muốn đổi tên chúng. Trong trường hợp cụ thể của tôi, tôi chỉ muốn đặt một nhân vật trước mặt họ.
Tôi đã tìm thấy dòng sau đây sẽ hoạt động, nhưng vì nó gạch ngang nên nó không:
for file in -N*.ext; do mv $file x$file; done
Nếu tôi đặt echo
trước mặt mv
tôi sẽ nhận được một loạt
mv -N1.ext x-f1.ext
mv -N2.ext x-f2.ext
Điều này là chính xác, ngoại trừ tất nhiên nó sẽ nghĩ tên tệp đầu tiên là tùy chọn. Vì vậy, khi tôi gỡ bỏ echo
và chạy nó, tôi chỉ nhận được một loạt
mv: illegal option -- N
Tôi đã cố gắng thay đổi nó thành
for file in -N*.ext; do mv "$file" "x$file"; done
nhưng dường như các trích dẫn bị bỏ qua Đã thử sử dụng dấu ngoặc đơn, nhưng sau đó biến không được mở rộng ... Tôi phải làm gì ở đây?
Cập nhật: Bây giờ tôi cũng đã cố gắng trích dẫn các trích dẫn. Như thế này:
for file in -N*.ext; do mv '"'$file'"' '"'x$file'"'; done
Và khi tôi lặp lại, nó có vẻ đúng, nhưng khi tôi thực sự chạy nó, tôi chỉ nhận được
mv: rename "-N1.ext" to "x-n1.ext":: No such file or directory
Tôi không biết làm thế nào để làm điều này bây giờ ... thở dài