ফাইলগুলি সন্ধান করুন এবং অনুলিপি করুন


128

নিম্নলিখিতগুলি কেন গন্তব্য ফোল্ডারে ফাইলগুলি অনুলিপি করে না?

# find /home/shantanu/processed/ -name '*2011*.xml' -exec cp /home/shantanu/tosend {} \;

cp: omitting directory `/home/shantanu/tosend'
cp: omitting directory `/home/shantanu/tosend'
cp: omitting directory `/home/shantanu/tosend'

উত্তর:


273

যদি আপনার অভিপ্রায়টি পাওয়া যায় তবে ফাইলগুলি / home / শান্তনু / টেন্ডারে অনুলিপি করা আপনার সিপি বিপরীত করার পক্ষে যুক্তিগুলির ক্রম থাকে:

find /home/shantanu/processed/ -name '*2011*.xml' -exec cp "{}" /home/shantanu/tosend  \;

দ্রষ্টব্য: সন্ধানকারী কমান্ডটি মিলে যাওয়া ফাইলের জন্য স্থানধারক হিসাবে {। ব্যবহার করুন


14
এর উদ্দেশ্য কী \;?
অ্যাস্ট্রিড

5
@ এস্ট্রিড এটি পরীক্ষা করুন
শেলবাই

find -iname '*.mp3' -mtime -1 -exec cp {} /home/my_path/ \;এই আদেশে কিছু ভুল আছে? এটা কাজ করছে না
mrid

2
ফলাফলের পথে কোনও স্থান থাকলে কাজ করে না। এই জন্য কোন পরামর্শ?
TheJeff

1
উবুন্টুতে 18 টি কোঁকড়া ধনুর্বন্ধকে একক উদ্ধৃতিতে রাখতে হবে: ফাইন্ড-নাম '*। এমপি 3' -মাইটাইম -1-এক্সেক সিপি '{}' / হোম / মাই_প্যাথ / \;
p6majo

32

আমি এরকম কিছু সমস্যার মুখোমুখি হয়েছি ...

আসলে, দুটি উপায়ে আপনি প্রক্রিয়া করতে পারি findকমান্ড আউটপুট copyকমান্ড

  1. যদি findকমান্ডের আউটপুটটিতে কোনও স্থান না থাকে অর্থাত্ যদি ফাইলের নামের মধ্যে স্থান না থাকে তবে আপনি নীচের বর্ণিত আদেশটি ব্যবহার করতে পারেন:

    বাক্য গঠন: find <Path> <Conditions> | xargs cp -t <copy file path>

    উদাহরণ: find -mtime -1 -type f | xargs cp -t inner/

  2. তবে বেশিরভাগ সময় আমাদের প্রোডাকশন ডেটা ফাইলগুলিতে এতে স্থান থাকতে পারে। নীচে উল্লিখিত আদেশটি বেশিরভাগ সময়ই নিরাপদ:

    বাক্য গঠন: find <path> <condition> -exec cp '{}' <copy path> \;

    উদাহরণ find -mtime -1 -type f -exec cp '{}' inner/ \;

দ্বিতীয় উদাহরণে, শেষ অংশটি অর্থাৎ অর্ধ-কোলনকে findকমান্ডের অংশ হিসাবেও বিবেচনা করা হয় , এন্টার বোতামটি টিপানোর আগে এড়াতে হবে। অন্যথায় আপনি এই জাতীয় কিছু একটি ত্রুটি পাবেন

find: missing argument to `-exec'

আপনার ক্ষেত্রে, ফাইল সন্ধানের অনুলিপি করার জন্য কপি কমান্ড সিনট্যাক্সটি ভুল/home/shantanu/tosend । নিম্নলিখিত কমান্ডটি কাজ করবে:

find /home/shantanu/processed/ -name '*2011*.xml' -exec cp  {} /home/shantanu/tosend \;

৩. আপনার যদি জিএনইউ find/ xargs, থাকে find <Path> <Conditions> -print0 | xargs -0 -r cp -t <copy file path>। উদাহরণ:find -mtime -1 -type f -print0 | xargs -r0 cp -t inner/
টবির গতি

7

cp -t /home/shantanu/tosendআপনার যুক্তিটি লক্ষ্য নির্দেশিকা এবং কোনও উত্স নয় বলে তা জানাতে আপনার প্রয়োজন । একবারে যতটা সম্ভব ফাইল অনুলিপি -exec ... +করার জন্য আপনি এটিকে এতে পরিবর্তন করতে পারেন cp


2
লিনাক্সে টার্গেট ডিরেক্টরিটি নির্দিষ্ট করতে হয়েছিল: find /home/shantanu/processed/ -name '*2011*.xml' -exec cp --target-directory=/home/shantanu/tosend {} \;
গুরুম

3
উপরের উত্তরের মতো সম্পূর্ণ কমান্ড সরবরাহ করা থাকলে এই উত্তরটি উন্নত ও সংক্ষিপ্ত করা যেতে পারে।
ব্রায়ান


-2

এই ত্রুটির কারণ হ'ল আপনি এমন একটি ফোল্ডার অনুলিপি করার চেষ্টা করছেন যা সিপি ধন্যবাদ দেওয়ার জন্য -r বিকল্পের প্রয়োজন


3
হাই, যেমন প্রশ্নের ইতিমধ্যে উত্তর দেওয়া হয়েছে (কিছুক্ষণ আগে থেকে) এটি আসলেই প্রাসঙ্গিক উত্তর নয়, এটির একটি মন্তব্যও হওয়া উচিত (যখন আপনার আরও কিছু প্রতিনিধি থাকে), যদি না আপনি এটিকে প্রসারিত ও ব্যাখ্যা করতে চান। শুধু একটি মাথা আপ :).
W1ll1amvl
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.