जवाबों:
कुछ संस्करणों में sort
एक -z
विकल्प है, जो अशक्त रिकॉर्ड के लिए अनुमति देता है।
find folder1 folder2 -name "*.txt" -print0 | sort -z | xargs -r0 myCommand
इसके अतिरिक्त, आप इसे करने के लिए एक उच्च-स्तरीय स्क्रिप्ट भी लिख सकते हैं:
find folder1 folder2 -name "*.txt" -print0 | python -c 'import sys; sys.stdout.write("\0".join(sorted(sys.stdin.read().split("\0"))))' | xargs -r0 myCommand
यह सुनिश्चित -r
करने के xargs
लिए विकल्प जोड़ें कि myCommand
एक तर्क के साथ कहा जाता है।
-t \0
सॉर्ट (जो एक -z
समानार्थी शब्द है) का विकल्प भी है
|sort
समाधानों के साथ समस्या यह है कि आप -exec
अब और उपयोग नहीं कर सकते । ठीक है, हालांकि यह दिए गए आपके कथन को फिर से लिखना संभव है , क्योंकि -exec
यह काम करता है xargs
, सवाल यह है कि "मिनी-स्क्रिप्ट" के बारे में क्या है ? ( sh -c ...
) मैं उस आदेश को कई कमांड के साथ एक 'श-सी' मिनी-स्क्रिप्ट में बदलने के लिए तुच्छ नहीं कहूंगा ताकि यह xargs
(यदि संभव हो तो, इसके साथ काम कर सके)
printf %s\\n a b c d e | xargs -n3 sh -c 'printf %s, "$@"; printf \\n' x
मुझे लगता है कि आपको इस -n
प्रकार के झंडे की आवश्यकता है
मैन सॉर्ट के अनुसार:
-n, --numeric-sort
compare according to string numerical value
संपादित करें
Print0 का इससे कुछ लेना-देना हो सकता है, मैंने अभी-अभी इसका परीक्षण किया है। Print0 को बाहर निकालें, आप -z
ध्वज का उपयोग करके स्ट्रिंग को इस प्रकार समाप्त कर सकते हैं
print0
उन फिल्नामों को अंतरिक्ष-अलग करता हुआ प्रतीत होता है, जो मुझे अपने आदेश को पारित करने की आवश्यकता है, दुर्भाग्य से
यदि आपके पास GNU समानांतर http://www.gnu.org/software/parallel/ स्थापित है, तो आप ऐसा कर सकते हैं:
find folder1 folder2 -name "*.txt" -print |
sort |
parallel myCommand
आप केवल द्वारा GNU समानांतर स्थापित कर सकते हैं:
wget http://git.savannah.gnu.org/cgit/parallel.git/plain/src/parallel
chmod 755 parallel
cp parallel sem
अधिक जानने के लिए GNU समानांतर के इंट्रो वीडियो देखें: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1
.
अलग-अलग संभालते हैं ... इसके साथsort
सूची के अंत में हवाएं होती हैं ... इसके साथpython
शीर्ष पर छंटनी होती है। (शायद अजगर के साथ तरहLC_COLLATE=C
)