Xargs कमांड का उपयोग करके फाइंड कमांड के साथ सर्च की गई फाइलों को कॉपी करें


2

मैं findवर्तमान निर्देशिका में कमांड का उपयोग करके खोजी गई फ़ाइलों की प्रतिलिपि बनाना चाहता हूं । मैं निम्नलिखित कमांड-लाइन निष्पादित कर रहा हूं:

    # find linux books
$ find ~ -type f -iregex '.*linux.*\.pdf' -print0 | xargs -0 echo
    # Expected output on STDOUT
../Books/LinuxCollection/Linux_TLCL-17.10.pdf ../Richard Blum, Christine Bresnahan - Linux Command Line and Shell Scripting Bible, 3rd Edition - 2015.pdf ..

मैं cpकमांड का उपयोग करके फ़ाइलों को वर्तमान निर्देशिका में कॉपी करना चाहता हूं । यहाँ वह कमांड है जो मैंने दर्ज किया है:

$ find ~ -type f -iregex '.*linux.*\.pdf' -print0 | xargs -0 cp .

हालाँकि, मुझे एक त्रुटि मिलती है जैसा कि ऊपर दिए गए आदेश पर अमल करने के लिए नीचे दिखाया गया है:

usage: cp [-R [-H | -L | -P]] [-fi | -n] [-apvXc] source_file target_file
       cp [-R [-H | -L | -P]] [-fi | -n] [-apvXc] source_file ... target_directory

मैंने कमांड प्रतिस्थापन का उपयोग करके समस्या को हल करने का भी प्रयास किया है। यहाँ वह आदेश है जो मैंने कोशिश की:

$ cp $(find ~ -type f -iregex '.*linux.*\.pdf' -print0) .

हालाँकि, मुझे एक और त्रुटि मिलती है जैसा कि ऊपर दिए गए आदेश को निष्पादित करने में नीचे दिखाया गया है:

cp: Blum,: No such file or directory

मैं xargsकमांड का उपयोग करके वांछित परिणाम कैसे प्राप्त कर सकता हूं ?

जवाबों:


2

xargsइसके इनपुट को कमांड में जोड़ता है, इसलिए आप मूल रूप से चल रहे हैं cp . source_file। उपयोग

find ~ -type f -iregex '.*linux.*\.pdf' -print0 | xargs -I '{}' -0 cp '{}' .

बजाय।


धन्यवाद। मैं जादू विकल्प के लिए मैनुअल पेज का संदर्भ देता हूं I। ईमानदारी से इसके उतरने के बारे में बहुत उलझन है।
बीजगणित

-Iइसका उपयोग केवल वर्ण को परिभाषित करने के लिए किया जाता है जिसे बाद में इनपुट द्वारा प्रतिस्थापित किया जाता है। तो xargsस्टडिन से पढ़ता है और फिर जो कुछ भी पढ़ता है उसे लेता है और जहां है वहीं डालता {}है।
nohillside

1

आप xargsनीचे दिखाए गए अनुसार कमांड का उपयोग किए बिना आसानी से वांछित परिणाम प्राप्त कर सकते हैं:

find ~ -type f -iregex '.*linux.*\.pdf' -print0 -exec cp {} . \;

एक सरल कमांड लाइन के लिए बनाता है और पाइपिंग को शामिल नहीं करता है।

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