Tôi phải viết một tập lệnh tìm tất cả các tệp thi hành trong một thư mục. Vì vậy, tôi đã thử một số cách để thực hiện nó và họ thực sự làm việc. Nhưng tôi tự hỏi nếu có một cách tốt hơn để làm như vậy.Tìm tệp thi hành bằng ls và grep
Vì vậy, đây là cách tiếp cận đầu tiên của tôi:
ls -Fla | grep \*$
này hoạt động tốt, bởi vì lá cờ -F làm việc cho tôi và cho biết thêm cho mỗi tập tin thực thi một dấu sao, nhưng chúng ta hãy nói rằng tôi không thích dấu hoa thị.
Vì vậy, đây là cách tiếp cận thứ hai:
ls -la | grep -E ^-.{2}x
này quá hoạt động tốt, tôi muốn có một dấu gạch ngang như ký tự đầu tiên, sau đó tôi không quan tâm đến hai nhân vật tiếp theo và ký tự thứ tư phải là x .
Nhưng có một chút mơ hồ trong các yêu cầu, bởi vì tôi không biết liệu tôi có phải kiểm tra người dùng, nhóm hoặc sự cho phép thực thi khác hay không. Vì vậy, điều này sẽ hoạt động:
ls -la | grep -E ^-.{2}x\|^-.{5}x\|^-.{8}x
Vì vậy, tôi đang thử nghiệm ký tự thứ tư, thứ bảy và thứ mười là x.
Bây giờ câu hỏi thực sự của tôi, là có một giải pháp tốt hơn sử dụng ls và grep với regex để nói:
Tôi muốn grep chỉ những tập tin, có ít nhất một x trong mười ký tự đầu tiên của một dòng sản phẩm của ls -la
Cảm ơn bạn đã thực sự tìm kiếm một số loại giải pháp trước khi yêu cầu trợ giúp. Vì bạn có yêu cầu sử dụng ls và grep, nó có vẻ như một câu hỏi về bài tập về nhà và tôi thấy mọi người yêu cầu câu trả lời cho bài tập về nhà mà không cố gắng (hoặc ít nhất là không có mô tả về những nỗ lực của họ). Tôi biết đã gần 4 năm sau, nhưng dù thế, tốt lắm. –