Tôi có các tệp a1 a2 a3 b1 b2 b3 và tôi cần loại trừ a2 và b2 khỏi danh sách bằng cách sử dụng lệnh ls
.Lệnh UNIX 'ls' loại trừ ký tự đại diện
Trả lời
Hãy thử điều này:
$ ls [a-b][13]
a1 a3 b1 b3
Hoặc
$ shopt -s extglob
$ ls !(*2)
a1 a3 b1 b3
Chỉ cần liệt kê các tập tin bạn muốn:
ls a1 a3 b1 b3
+1 vì đây là cách duy nhất để đáp ứng ràng buộc "chỉ sử dụng ls". Bất kỳ nỗ lực nào để thao tác danh sách đối số bằng cách sử dụng shell globs đều sử dụng shell. (Mặc dù, bạn sử dụng shell để exec ls, vì vậy có lẽ ràng buộc cụ thể đó không được đặt ra.) –
@WilliamPursell, suy nghĩ của tôi chính xác. –
Hãy thử với ls và grep
ls -1 | grep -viw "a2\|b2"
chú ý Pay sau ls một đặt 1 (số một) chứ không phải chữ "l". Đôi khi phông chữ làm cho chúng khó hiểu.
tùy chọn sử dụng --ignore
ls --ignore=[ab]2
Nhưng trên phiên bản 'ls' tùy chọn' --ignore' hoạt động như thế nào? Trên MAC của tôi nó không tồn tại. – dash1e
GNU Coreutils 8.5 – bouzuya
Tôi đang sử dụng Fefora13 nếu nó giúp. – user1078719
Khi tôi gõ ls --ignore = "* 2", nó hoạt động nhưng (giả sử tôi có các tệp khác) khi tôi nhập ls -a * -b * --ignore = "* 2", không có tệp nào bị loại trừ – user1078719