छिपी निर्देशिका को छोड़कर पुन: कॉपी करें


13

मैं कैसे पुनरावर्ती की तरह नकल कर सकता हूं cp -rf *, लेकिन छिपी निर्देशिका (निर्देशिका के साथ शुरू होने वाले) और उनकी सामग्री को छोड़कर?

जवाबों:


6

आप बस के साथ सब कुछ कॉपी कर सकते हैं

cp -rf 

और फिर गंतव्य पर छिपी निर्देशिकाओं को हटा दें

find -type d -name '.*' -and -not -name '.' -print0 | xargs -0 rm -rf

वैकल्पिक रूप से, यदि आपके पास कुछ उन्नत टार (जैसे GNU टार) हैं, तो आप कुछ पैटर्न को बाहर करने के लिए टार का उपयोग करने का प्रयास कर सकते हैं। लेकिन मुझे डर है कि केवल छिपी निर्देशिका को बाहर करना संभव नहीं है, लेकिन छिपी हुई फ़ाइलों को शामिल करें।

उदाहरण के लिए कुछ इस तरह से:

tar --exclude=PATTERN -f - -c * | tar -C destination -f - -x

Btw, GNU टार में बहिष्कृत शैली विकल्पों का एक चिड़ियाघर है। मेरा मनपसंद है

--exclude-vcs

30

कुछ फ़ाइलों को छोड़कर निर्देशिका ट्री की प्रतिलिपि बनाने के लिए अच्छे विकल्प हैं:

  • rsync : यह मूल रूप से cp प्लस बहिष्करण संभावनाओं का एक टन है।

    rsync -a --exclude='.*' /source/ /destination
    
  • pax : इसमें कुछ बहिष्करण क्षमताएं हैं, और यह POSIX में है इसलिए इसे हर जगह उपलब्ध होना चाहिए (सिवाय इसके कि कुछ लिनक्स वितरण इसे किसी कारण से अपनी डिफ़ॉल्ट स्थापना में शामिल न करें)।

    cd /source && mkdir -p /destination && \
    pax -rw -pp -s '!.*/\..*!!'  . /destination
    

8

वैकल्पिक रूप से cpआप के rsyncसाथ एक का उपयोग कर सकते हैं --exclude=PATTERN

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