अपवादों के साथ एक से दूसरे निर्देशिका में सभी फ़ाइलों को पुन: कॉपी करें


8

मुझे एक डायरेक्टरी से दूसरी डाइरेक्टरी के एक जोड़े को छोड़कर सभी फाइलों को कॉपी करने की आवश्यकता कैसे है। उदाहरण के लिए:

cp -R test /www/test2 would copy all

लेकिन मैं लॉग और लॉग नामक 2 फ़ोल्डरों को बाहर करना चाहता हूं।

मैंने कुछ इस तरह की कोशिश की:

find ~test -not -name logs,log |  cp -R test /www/test2 

लेकिन क्या आप मुझे सिंटेक्स के साथ मदद कर सकते हैं?

जवाबों:


10

Rsync का उपयोग करें:

rsync -a --exclude=logs --exclude=log from/ to/

rynsc थोड़े मेरे लिए अच्छा काम किया!
माइकल

rsync अब मेरा नया दोस्त है :) धन्यवाद, स्पष्टीकरण साफ
Alexa

2

मुझे लगता है कि आप कुछ इस तरह की तलाश कर रहे हैं:

find dir -type d ! \( -name 'log' -o -name 'logs' \) | xargs -I{} cp -R {} /www/test2/{}

@sputnick मेरे परिवर्तन देखें। यदि आप इसे जानते हैं तो इसके लिए emacs regex की पेशकश करने के लिए स्वतंत्र महसूस करें।
टिम पोटे

0

यदि उपयोग कर रहे हैं :

shopt -s extglob
cp -R test/!(log|logs) /www/test2

Http://wiki.bash-hackers.org/syntax/pattern देखें


ऐसा होने पर क्या होता है test/someotherdir/logs? ओपी ने कभी नहीं कहा logऔर logsदूसरी सबसे बड़ी निर्देशिका थी।
टिम पोटे

यदि आप ओपी कमांड find ~test -not -name logs,logलॉग - इन फिर से पढ़ते हैं और लॉग एक उप-डायर होना चाहिए।
गाइल्स क्वेनोट

findसभी उप-निर्देशिकाओं के माध्यम से पुनरावर्ती दिखता है । फ़ाइल ग्लोबिंग नहीं करता है। काम करने के लिए आपके उत्तर के लिए, logऔर तत्काल उप-निर्देशिकाएं बनानी logsहोंगी । test
टिम पोटे
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.