Tôi nghĩ rằng bạn muốn sử dụng một tính năng của vỏ, không phải của ls
. Tôi sử dụng bash, vì vậy tôi đã kiểm tra những gì bạn muốn trong man bash
. Tìm kiếm "^ MỞ RỘNG", (bằng cách nhấn '/' đầu tiên). Trích đoạn:
SỰ BÀNH TRƯỚNG
Mở rộng được thực hiện trên dòng lệnh sau khi nó đã được chia thành các từ. Có nhiều loại bảy trong việc mở rộng thực hiện: mở rộng cú đúp , dấu ngã mở rộng , tham số và mở rộng biến , thay thế lệnh , mở rộng số học , tách từ , và mở rộng tên đường dẫn .
︙
... <snip> ...
︙
Mở rộng tên đường dẫn
Sau khi chia tách từ, trừ khi -f tùy chọn đã được thiết lập, bash quét mỗi từ cho các nhân vật *
, ?
và [
. Nếu một trong những ký tự này xuất hiện, thì từ đó được coi là một mẫu và được thay thế bằng một danh sách tên tệp được sắp xếp theo thứ tự bảng chữ cái phù hợp với mẫu. Giáo dục
Gần đây tôi đã bắt đầu loại trừ các tệp dựa trên chữ cái đầu tiên của họ, với một lệnh như:
$ ls ./[^t]*
Điều này sẽ phù hợp với bất cứ điều gì không bắt đầu với chữ cái t
. Nếu bạn thêm nhiều ký tự giữa các dấu ngoặc, thì bạn cũng loại trừ các tệp bắt đầu bằng các chữ cái đó.
Tìm kiếm một liên kết, và tôi có một liên kết tốt! Xem Khớp mẫu . Từ đó, điều này sẽ làm việc cho trường hợp của bạn:
$ ls -lrt ./!(temp_log.*)
Điều này đòi hỏi extglob
tùy chọn shell được kích hoạt bằng cách sử dụng hàm shopt
dựng sẵn ( shopt -s extglob
), như đã nêu của Gilles .
ls --hide='temp_log.$$'
nên làm việc. Bạn có thể / cũng nên mở rộng điều này bằng các ký tự đại diện, tùy thuộc vào phần nào của toàn bộ thuật ngữtemp_log.$$
.