मैं किसी भी आउटपुट निर्देशिका में सभी पीडीएफ फाइलों को एक निर्देशिका में (और यह सबडायरेक्टरीज) कॉपी कैसे कर सकता हूं?


20

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

मैं यह कैसे कर सकता हूँ?


1
आप इस मामले को कैसे संभालना चाहेंगे दो फाइलें हैं a/x.pdfऔर b/x.pdf?
कर्नल पैनिक

जवाबों:



30
  find /bunchopdfs -name "*.pdf" -exec mv {} /papers \;    

यहाँ एक परीक्षण मैंने किया है

$ ls -R
.:
a  aaa bbb.pdf  pdfs

./a:
foo.pdf

./pdfs:

फ़ाइल को "आबा bbb.pdf" पर ध्यान दें।

$ find . -name "*pdf" -exec mv {} pdfs \;
$ ls -R
.:
a  pdfs

./a:

./pdfs:
aaa bbb.pdf  foo.pdf


आपको "{}"रिक्त स्थान वाले फ़ाइल नामों से निपटने के लिए बोली लगाने की आवश्यकता नहीं है ?
टेराडन

@terdon: वास्तव में, नहीं, तुम नहीं (हालांकि उस तरह की समस्या मुझे कभी-कभी पकड़ लेती है)। अद्यतन उत्तर देखें।
RedGrittyBrick

4
find -print0 /directory/with/pdfs -iname "*.pdf" | xargs -0 mv -t /papers

(एक अन्य उत्तर के समान लेकिन मैं पाइप / xargs / mv पसंद करता हूं ... मेरे लिए अधिक सहज है)

FYI करें, मैंने उपरोक्त एक-लाइन स्क्रिप्ट को सफलतापूर्वक कई निर्देशिकाओं और एकाधिक पीडीएफ फाइलों पर किया।


1
xargs में "फ़ाइलनामों में रिक्त स्थान" का मुद्दा है जो -exec नहीं करता है। आप -print0अपने खोज और -0xargs में args जोड़कर इसे कुछ हद तक मध्यस्थता कर सकते हैं ।
रिच होमोलका

@RichHomolka बदला हुआ जवाब देखें। (टिप के लिए धन्यवाद। यह वास्तव में उपयोगी है!)
ट्रेवर बॉयड स्मिथ

क्या आपने कभी कोशिश की है? लगता है कि आपको कमांड के अंत में "-print0" जोड़ने की आवश्यकता है
18'18

0

Windows कमांड लाइन (cmd.exe) के लिए, आप उपयोग कर सकते हैं:

for /F "usebackq delims==" %j IN (`dir /s /b *.pdf`) do copy "%j" c:\target_dir

1
नमस्ते और एसयू में आपका स्वागत है। आपके उत्तर के लिए धन्यवाद, लेकिन सवाल विशेष रूप से एक लिनक्स समाधान का अनुरोध करता है।
टेर्डन सेप

2
यह अभी भी अद्भुत है कि खिड़कियां भी ऐसा कर सकती हैं!
वोरैक

0

यदि आप केवल एक निर्देशिका को गहराई से खोज रहे हैं, तो आप ऐसा कर सकते हैं:

mkdir <destination>
mv */*.pdf <destination>

जहां <destination>कुछ निर्देशिका के लिए खड़ा है। mvस्वचालित रूप से आपके लिए एक निर्देशिका नहीं बनाएगा।

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