Bash: Cách liệt kê n số lượng tệp ngẫu nhiên (không phải đầu hoặc đuôi)


7

Tôi có một thư mục lớn chứa nhiều tệp cùng loại. Tôi phải gửi một vài tập tin ngẫu nhiên để kiểm toán. Các tệp này không nên từ trên xuống hoặc dưới cùng (ví dụ: không phải trong headhoặc tail). Đây là quá trình phụ mà tôi đang vật lộn.

Tôi muốn nhận được bất kỳ số lượng các tập tin. Nó có thể là 10 hoặc 2 hoặc 3, nhưng không nên theo thứ tự nào.

Ví dụ từ danh sách các tập tin này:

10 1121231243 12 3124234ewdf 31243345 xaa 112 1121231243214 3 3124234ewdffd 3124334532 xab 1121 112123124321442334 3124 31243 3124334532324 xac 112123 1121ewszf 3124234 312433 file1

Tôi muốn có một tập hợp con ngẫu nhiên như trong trường hợp này:

1121 112123124321442334 3124 1121ewszf

Tại sao bạn không thể sử dụng headhay tail? Đây có phải là một bài tập về nhà?
slhck

1
Tôi đang làm việc trong một công ty và tôi đã gặp phải một vấn đề như thế này, đó là một thư mục lớn, trong đó một số tệp ở giữa, sẽ được gửi để kiểm tra. Đó là vấn đề lớn hơn và tôi đã gặp phải trong quá trình phụ này.
tạm thời

2
Sẽ tốt hơn nếu bạn mô tả vấn đề thực sự thay vì giải pháp đã cố gắng của bạn . Đây không chỉ là một câu hỏi khó khăn, mà bạn còn kết thúc với những câu trả lời có thể vô dụng. Bạn có thể chỉnh sửa câu hỏi của bạn và cho chúng tôi biết thêm về tình hình?
slhck

Câu trả lời:


8

Sử dụng ngẫu nhiên sort( -Rhoặc --random-sort) và sau đó headhoặc tail:

ls | sort -R | head -10


Cảm ơn. Trong trường hợp của tôi, tôi luôn cần 10 mục giống nhau, nhưng theo thứ tự ngẫu nhiênls | head -10 | sort -R
FindOutIslamNow

2

Bạn có thể sử dụng sort -Rđể sắp xếp danh sách ngẫu nhiên, sau đó sử dụng $RANDOMbiến với headđể có được số lượng kết quả ngẫu nhiên:

ls | sort -R | head -n $(( $RANDOM % 10 + 1 ))

Bạn sẽ nhận được 10 kết quả hoặc ít hơn (không bao giờ bằng 0)

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.