Làm cách nào để liệt kê các tệp văn bản mà không có phần mở rộng tệp .txt?


10

Ví dụ: làm thế nào tôi có thể sao chép:

ls *.txt

khi các tệp văn bản của tôi bị thiếu phần .txtkết thúc và khi các phần mở rộng xuất hiện giống như nhiều loại tệp khác?

Ngoài ra, có thể liệt kê cụ thể chỉ các tệp có phần mở rộng tệp KHÔNG?

Câu trả lời:


8

Để khớp với các tệp hoàn toàn không có tiện ích mở rộng, bạn có thể sử dụng lệnh

ls | grep -v '\.'

Để khớp với các tệp không có .txtphần mở rộng, bạn có thể sử dụng lệnh

ls | grep -v '\.txt'

Điều này sẽ chuyển danh sách các tệp trong thư mục hiện tại grep, sẽ loại bỏ tất cả các tên tệp có .(hoặc .txtcho lệnh thứ hai) trong đó.


Cảm ơn bạn! Điều này đã trả lời câu hỏi của tôi. Ngoài ra, có thể sử dụng cùng một công cụ grep với các lệnh khác không? Chẳng hạn, với todos? (để chuyển đổi kết thúc dòng)
user82212

1
Có, grepcó thể được sử dụng với bất kỳ lệnh nào. Các |biểu tượng được sử dụng để vượt qua đầu ra từ một lệnh khác, và grepsẽ phù hợp với dòng có (hoặc không có) văn bản cụ thể. Nhưng nếu bạn muốn sửa đổi văn bản (ngoài việc chỉ in các dòng khớp), bạn nên xem sedlệnh.
iBelease

Để chỉ tìm các tệp văn bản (không bao gồm các thư mục và tệp nhị phân), hãy sử dụng:ls --classify | grep -v '/'.'*'
chaskes

6

Với ls -ignore="PATTERN"bạn có thể loại trừ các tập tin từ một kết quả ls.

Ví dụ, ls --ignore="*.txt"để bỏ qua các tập tin txt.


3

Đơn giản chỉ cần phủ nhận mô hình của bạn (lưu ý: shopt -s extgloblà bắt buộc).

Để hiển thị tất cả các tệp mà không cần gia hạn:

ls !(*.*)

Để hiển thị các txttệp không , hãy thử:

ls !(*.txt)

0

Lệnh ls -SX1|lesssẽ sắp xếp theo phần mở rộng trong một cột và các tệp mà không có tệp nào sẽ được chuyển lên trên cùng. Đường ống qua ít hơn như trong ví dụ được đề xuất cho các thư mục có nhiều hơn một vài tệp để giới hạn đầu ra cho một màn hình đầy đủ tại một thời điểm.


0

Tôi thích tránh sử dụng grep cho các hoạt động liệt kê đơn giản.

Để tránh sử dụng grep,

Tôi khuyên bạn nên sử dụng ls !(*.*)để tìm tệp không có phần mở rộng tệp và

ls -I "*.gz" -I "*.tz" hoặc là ls --ignore={"*.jpg","*.png","*.bmp"}

để loại trừ các phần mở rộng tập tin cụ thể

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.