2013-08-09 5 views
17

मैं कुछ फ़ाइलों को एक निर्देशिका से दूसरी निर्देशिका में कॉपी करने की कोशिश कर रहा हूं। इस आदेशलिनक्स में सीपी का उपयोग करते समय 'एक ही फाइल' चेतावनी संदेश से कैसे बचें?

find "$HOME" -name '*.txt' -type f -print0 | xargs -0 cp -t $HOME/newdir 

का उपयोग करते हुए मैं कह रहा एक चेतावनी संदेश मिल

cp: '/home/me/newdir/logfile.txt' और '/home/me/newdir/logfile.txt' एक ही फाइल

इस चेतावनी संदेश से कैसे बचें?

+1

'your_command 2>/dev/null' =) –

+0

हाँ, यह काम करता है लेकिन काफी नहीं समाधान के लिए मैं देख रहा था :-) इसके साथ में मैं इस चेतावनी से छुटकारा पाता हूं लेकिन अभी भी – Matkrupp

उत्तर

11

समस्या यह है कि आप अपने आप को एक फ़ाइल कॉपी करने की कोशिश है। आप इस तरह खोजने के आदेश के परिणामों से गंतव्य निर्देशिका को निकालते हुए यह बच सकते हैं:

find "$HOME" -name '*.txt' -type f -not -path "$HOME/newdir/*" -print0 | xargs -0 cp -t "$HOME/newdir" 
+0

धन्यवाद लेकिन यह उबंटू में एक ही चेतावनी उत्पन्न करता है। – Matkrupp

+0

@ मटकाकुप हाँ मेरे पास एक टाइपो था। अद्यतन संस्करण के साथ प्रयास करें। – user000001

1

प्रक्रिया में इसे अद्वितीय बनाएं। लेकिन इस

find "$HOME" -name '*.txt' -type f -print0 | sort -zu | xargs -0 cp -t "$HOME/newdir" 

छँटाई की आवश्यकता होती है या यदि वह उत्पन्न फ़ाइलों के बारे में नहीं है, cp की -u विकल्प का उपयोग करने का प्रयास करें।

find "$HOME" -name '*.txt' -type f -print0 | xargs -0 cp -ut "$HOME/newdir" 
 
-u copy only when the SOURCE file is newer than the destination file or when 
    the destination file is missing 
+0

से बच नहीं सकता धन्यवाद, लेकिन इन दोनों समाधानों में उबंटू बैश में एक ही चेतावनी संदेश उत्पन्न होता है। – Matkrupp

संबंधित मुद्दे