Một lớp lót có thể dễ dàng gõ thẳng từ thiết bị đầu cuối:
for f in *.md; do mv "$f" "test - $f"; done
Hoặc viết lại trên các dòng riêng biệt thay vì sử dụng dấu chấm phẩy:
for f in *.md
do
mv "$f" "test - $f"
done
Triển lãm
Cú pháp của for(trong sh):
for NAME [in WORDS ... ] ; do COMMANDS; done
Ở đây, chúng tôi NAMElà fvà WORDStất cả các tệp trong thư mục hiện tại phù hợp *.md. Vì vậy, biến $fsẽ được thay thế với mỗi tệp phù hợp *.md.
Vì vậy a.md:
mv "$f" "test - $f"
trở thành
mv "a.md" "test - a.md"
Các trích dẫn rất quan trọng vì mỗi tên tệp $fcó thể chứa khoảng trắng. Nếu không mvsẽ nghĩ mỗi từ là một tập tin riêng biệt. Ví dụ: nếu không có dấu ngoặc kép và có một tệp được gọi Foo Bar.md, nó sẽ dịch là:
mv Foo Bar.md test - Foo Bar.md
mà sẽ không làm việc như ý định. Nhưng bằng cách gói $ftrong dấu ngoặc kép, nó có ý nghĩa:
mv "Foo Bar.md" "test - Foo Bar.md"
Lưu ý cú pháp của for, bạn cũng có thể đổi tên một tập hợp con của tất cả các *.mdtệp bằng cách đặt tên rõ ràng cho từng tệp:
for f in a.md b.md d.md; do mv "$f" "Test - $f"; done
Hoặc sử dụng mở rộng vỏ:
for f in {a,b,d}.md; do mv "$f" "Test - $f"; done