मान लीजिए कि आप का एक समूह है .docx
, .mp3
, .txt
और .xlsx
इस निर्देशिका संरचना में संग्रहीत फ़ाइलों:
/files/
/files/dir1/
/files/dir1/dir11/
/files/dir1/dir12/
/files/dir1/dir13/
/files/dir2/
/files/dir3/
/files/dir3/dir31/
/files/dir3/dir32/
/files/dir4/
/files/dir5/
/files/dir51/
/files/dir52/
/files/dir53/
/files/dir54/
... और आप सभी मिली .mp3
फ़ाइलों को कॉपी करने के लिए ऐसी सभी निर्देशिकाओं में फिर से आना चाहते हैं, /home/me/music/
लेकिन आप गंतव्य में ऐसी निर्देशिका ट्री को संरक्षित नहीं करना चाहते हैं (यानी आप चाहते हैं कि सभी मिली हुई .mp3
फ़ाइलों /home/me/music/
को संबंधित निर्देशिकाओं में कॉपी करने के बजाय कॉपी किया जाए। जैसे /home/me/music/dir1/
, /home/me/music/dir1/dir11/
वगैरह)।
ऐसे मामले में, शेल टर्मिनल (बैश) में आपकी फ़ाइल खोज की जड़ तक पहुँचने के लिए सबसे पहले इस कमांड को चलाएँ:
cd /files
... और फिर इस कमांड को चलाएं:
for i in `find . -iname '*.mp3'`; do cp $i /home/me/music/; done
यदि आप गंतव्य में स्रोत की निर्देशिका ट्री को संरक्षित करना चाहते हैं, तो इसके बजाय इस कमांड को चलाएं (चलाने के बाद cd /files
):
find . -iname '*.mp3' | cpio -pdm /home/me/music/
ऊपर बताए गए आदेशों पर, खोज केस-संवेदी है (यानी मैचों .mp3
, .MP3
, .mP3
और .Mp3
)। -name
इसके बजाय इसका उपयोग करें -iname
यदि आप चाहते हैं कि खोज केस-संवेदी हो (जैसे कि वर्णों -name
के .mp3
स्ट्रिंग के लिए उपयोग करने से समाप्त होने वाली फ़ाइलों के साथ मेल खाएगा, .mp3
लेकिन न तो समाप्त होने वाले .MP3
, .mP3
न ही .Mp3
)।
-iname
इसके बजाय सलाह देता हूं ।-name
.MP3