Tôi muốn liệt kê tất cả các tệp trong một thư mục không có phần mở rộng.
Ví dụ:
$ ls
a.txt b c.pdf d e.png
$ ls -someOption
b d
Lệnh nào tôi có thể sử dụng thay vì ls -someOption
?
.gitignore
một phần mở rộng?
Tôi muốn liệt kê tất cả các tệp trong một thư mục không có phần mở rộng.
Ví dụ:
$ ls
a.txt b c.pdf d e.png
$ ls -someOption
b d
Lệnh nào tôi có thể sử dụng thay vì ls -someOption
?
.gitignore
một phần mở rộng?
Câu trả lời:
shopt -s extglob ## enables extended globbing
ls !(*.*) ## matches every file except those containing a dot
Bạn sẽ thấy rằng làm điều này sẽ cho bạn thấy nội dung của mọi thư mục trong thư mục làm việc. Nếu bạn không muốn điều này, hãy sử dụng:
ls -d !(*.*)
Bạn có thể đặt shopt -s extglob
tại của bạn ~/.bashrc
để có nó được kích hoạt bất cứ khi nào bạn mở một thiết bị đầu cuối. Đã có một dòng trong Ubuntu mặc định ~/.bashrc
(dòng 29 cho tôi vào ngày 13.04) mà bạn có thể không chú ý để kích hoạt tính năng này (và globalstar).
Xem wiki của Greg để biết thêm thông tin về các tùy chọn toàn cầu khác nhau của shell. Lưu ý rằng đây là thuộc tính của bash shell chứ không phải ls
lệnh, vì vậy bạn có thể sử dụng nó với các lệnh khác.
Ngoài ra, bạn có thể sử dụng
ls --ignore='*.*'
hoặc là
ls -I '*.*'
... đó là một ls
tùy chọn nội bộ , nhưng extglob có thể được áp dụng cho bất kỳ lệnh tùy ý nào và theo tôi thì hữu ích hơn.
ls !(*.*)