Câu trả lời:
Sử dụng tùy chọn dòng lệnh -vhoặc --invert-match,
ls -R |grep -v -E .*[\.exe]$\|.*[\.html]$
grep -v
hoặc là
grep --invert-match
Bạn cũng có thể làm điều tương tự bằng cách sử dụng find:
find . -type f \( -iname "*" ! -iname ".exe" ! -iname ".html"\)
Thêm thông tin ở đây .
findlệnh là giải pháp ngữ nghĩa nhất cho vấn đề XY này. Kết hợp lsvà grepcho mục đích này có vẻ như hacky tốt nhất. Đây phải là câu trả lời được chấp nhận. (+1)
grep "subscription" | grep -v "spec"
-v/--invert-matchsẽ không nhất thiết phải lật xem mã trả vềgrepcho biết thực hiện thành công hay không, nhưng thay vào đó sẽ khớp với các dòng mà nếu không sẽ không khớp. Những người đang tìm cách đảo ngược mã trả về (nghĩa là thành công nếu tất cả các dòng không khớp với mẫu, thay vì ít nhất một) nên sử dụng! grep. Điều này tìm thấy sử dụng trong các biểu thức điều kiện, ví dụ :if ! ls | grep -qE ".(\.exe)$"; then echo No .exe files in $(pwd); fi.