यदि आप एक निर्देशिका पदानुक्रम के अंदर सभी फ़ाइलों को एकल गंतव्य निर्देशिका में, ≥4 (अपने shopt -s globstarमें रखना ~/.bashrc) या zsh में ले जाना चाहते हैं:
mkdir ~/new-directory
mv -i **/*.xxx ~/new-directory
अन्य गोले में:
mkdir ~/new-directory
find . -name '*.xxx' -exec mv -i {} ~/new-directory \;
इस findकमांड को कैसे पढ़ें :
.: वर्तमान निर्देशिका को पार करना
-name '*.xxx': उन फाइलों पर कार्य करें जिनके नाम इस पैटर्न से मेल खाते हैं
-exec … \;: प्रत्येक फ़ाइल पर इस कमांड को निष्पादित करें, फ़ाइल के {}लिए पथ द्वारा प्रतिस्थापित
findयदि आपके पास बहुत सी फाइलें हैं, तो इसका उपयोग करने के लिए एक अधिक जटिल कमांड है, क्योंकि इसके mvलिए प्रत्येक फाइल के लिए एक अलग प्रक्रिया लागू करने की आवश्यकता नहीं है :
find . -name '*.xxx' -exec sh -c 'mv -i "$@" "$0"' ~/new-directory {} +
+अंत में बताता है findएक समय में एक से अधिक फ़ाइलों पर आदेश को लागू करने की। चूँकि findकेवल कमांड लाइन के अंत में फ़ाइल नाम रख सकते हैं, और mvगंतव्य निर्देशिका को अंतिम रूप देने की आवश्यकता है, हम तर्कों को पुनर्व्यवस्थित करने के लिए एक मध्यवर्ती शेल का उपयोग करते हैं (शेल के लिए "$0"पहला तर्क है ~/new-directory, और "$@"बाद के तर्क हैं) findका विस्तार {})।