Liệt kê tất cả các tệp không có phần mở rộng


11

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?


Thông thường nếu bạn muốn biết các tùy chọn cho một lệnh, hãy đọc trang man của nó bằng cách gõ "man <lệnh>" trong thiết bị đầu cuối. man là viết tắt của hướng dẫn (trợ giúp)
.cho ví

@AadityaBagga Trong trường hợp này, câu trả lời không được tìm thấy trong hướng dẫn.
wvducky

Trong kịch bản này, bạn có xem xét .gitignoremột phần mở rộng?
Amit N Nikol

Câu trả lời:


14
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 extglobtạ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 lslệ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 lstù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.


1
OP đã không đề cập đến vỏ nào, mặc dù tôi đoán bash được giả định. Nếu đó là ksh, không yêu cầu extglob. Theo mặc định, chỉ cần:ls !(*.*)
runrig

1
@runrig Bạn khá chính xác, nhưng với bản chất cơ bản của câu hỏi tôi giả sử OP đang sử dụng shell bash mặc định.
evilsoup

10

Cả hai ls | grep -v \\.ls | grep -v "\."hoạt động.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.