Câu trả lời:
Chà, nếu tất cả nằm trong cùng một thư mục, bạn có thể làm một cái gì đó như thế này trong bash hoặc bất kỳ shell Bourne-style / POSIX nào khác:
for FILE in dev-*; do ln -s "$FILE" "${FILE#dev-}"; done
sẽ tạo liên kết tượng trưng mà không có "dev-" cho các tệp bắt đầu bằng "dev-".
${FILE#dev-}là một bashishm, AFAIU (chắc chắn không phải /bin/shtrên đường Solaris trở lại).
                    ${FILE#dev-}không phải Bourne, mà là POSIX (được giới thiệu bởi ksh, không phải bash). Bạn cần --cho lnđể đánh dấu sự kết thúc tùy chọn cho một *mô hình, hoặc tốt hơn, sử dụng một dev-*mô hình. Mã vì nó sẽ tạo ra các liên kết tượng trưng cho chính chúng trong mọi thư mục con của thư mục hiện tại có tên không bắt đầu bằng dev-. Xem thêm các ghi chú trong câu trả lời của tôi.
                    dev-*thay vì *làm việc như dự định ở đây - vì mã đứng trên nó cố gắng tạo liên kết tượng trưng cho mọi tệp.
                    Với zsh, bạn sẽ làm:
autoload zmv # typically in ~/.zshrc
zmv -Lsv 'dev-(*.php)' '$1'
Với bashhoặc các vỏ POSIX khác (bao gồm zsh):
for f in dev-*.php; do
  ln -s "$f" "${f#dev-}"
done
Lưu ý rằng nếu site.phptồn tại và là một thư mục (hoặc một liên kết tượng trưng đến một thư mục), thì bạn có thể kết thúc với một dev-site.phpliên kết tượng trưng bên trong nó. Với GNU, lnbạn có thể thêm -Ttùy chọn để bảo vệ chống lại điều đó (với zmvviệc sử dụng -o -Tđể chuyển -Ttùy chọn xuống ln).