बैश: कैसे फ़ाइलों की एन यादृच्छिक संख्या (सिर या पूंछ नहीं)


7

मेरे पास एक बड़ी निर्देशिका है जिसमें इसी तरह की कई फाइलें हैं। मुझे ऑडिटिंग के लिए कुछ रैंडम फाइलें भेजनी हैं। ये फाइलें ऊपर या नीचे (उदाहरण के लिए headया अंदर नहीं tail) से नहीं होनी चाहिए । यह उप प्रक्रिया है जो मैं संघर्ष कर रहा हूं।

मैं किसी भी फाइल को प्राप्त करना चाहता हूं। यह 10 या 2 या 3 हो सकता है, लेकिन किसी भी क्रम में नहीं होना चाहिए।

फ़ाइलों की इस सूची से उदाहरण के लिए:

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

मैं इस उदाहरण में एक यादृच्छिक सबसेट प्राप्त करना चाहूंगा:

1121 112123124321442334 3124 1121ewszf

आप उपयोग क्यों नहीं कर सकते हैं headया tail? क्या यह होमवर्क असाइनमेंट है?
slhck

1
मैं एक कंपनी में काम कर रहा हूं और मुझे इस तरह के मुद्दे का सामना करना पड़ा है जहां यह एक बड़ी निर्देशिका है, जहां बीच में कुछ फाइलें ऑडिटिंग के लिए भेजी जानी हैं। यह बड़ा मुद्दा है और मैं इस उप-प्रक्रिया में मारा गया।
अस्थायी

2
बेहतर होगा यदि आप अपने हल किए गए समाधान के बजाय वास्तविक मुद्दे का वर्णन करें । न केवल यह एक वंचित प्रश्न है, लेकिन आप संभवतः बेकार जवाबों के साथ भी समाप्त करेंगे। क्या आप अपना प्रश्न संपादित कर सकते हैं और हमें स्थिति के बारे में अधिक बता सकते हैं ?
slhck

जवाबों:


8

यादृच्छिक sort( -Rया --random-sort) और फिर headया का उपयोग करें tail:

ls | sort -R | head -10


धन्यवाद। मेरे मामले में मुझे हमेशा समान 10 वस्तुओं की आवश्यकता थी, लेकिन यादृच्छिक क्रम मेंls | head -10 | sort -R
FindOutIslamNow

2

आप sort -Rसूची को क्रमबद्ध तरीके से क्रमबद्ध करने के लिए उपयोग कर सकते हैं , और फिर परिणाम की एक यादृच्छिक संख्या प्राप्त करने के लिए $RANDOMचर का उपयोग कर सकते हैं head:

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

आपको 10 परिणाम या उससे कम (कभी शून्य नहीं) प्राप्त होंगे

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.