আমি কীভাবে কোনও ফাইল অনুলিপি করতে পারি এবং একই সাথে লক্ষ্য ডিরেক্টরিগুলি তৈরি করতে পারি?


20

আমি চাই cp aaa/deep/sea/blob.psdথেকেbbb/deep/sea/blob.psd

যদি ডিরেক্টরিগুলি deepএবং seaডিরেক্টরিগুলি বিদ্যমান না থাকে তবে অনুলিপিটি কীভাবে করব bbbযাতে অনুলিপি উভয়ই ডিরেক্টরিগুলি তৈরি করে যা ফাইলটি অনুলিপি করে?

এই মুহূর্তে আমি
No such file or directoryগভীর এবং সমুদ্রের অস্তিত্ব নেই।

আমি মানুষটির পৃষ্ঠাগুলি এবং অন্যান্য প্রশ্নগুলির সাহায্যে তাকিয়েছিলাম তবে কিছুই আমার দিকে ঝাঁপিয়ে পড়ে না।

আমার কাছে সবচেয়ে কাছেরটি rcpডিরেক্টরিটি ব্যবহার করছে:

rcp -r aaa/deep/sea/ bbb/deep/sea/

যদিও এটি সম্পূর্ণ ডিরেক্টরি এবং বিষয়বস্তু অনুলিপি করে এবং আমি কেবল একটি ফাইল চাই। যা করার চেষ্টা করছেন তা কিন্তু দিয়েছেনcp: cannot create regular file bbb/deep/sea/blob.psd' such file or directory

উত্তর:


19

এই জাতীয় পরিস্থিতির জন্য এই জাতীয় পরবর্তী ফাংশনটি ব্যবহার করার চেষ্টা করুন:

copy_wdir() { mkdir -p -- "$(dirname -- "$2")" && cp -- "$1" "$2" ; }

এবং হিসাবে এটি ব্যবহার করুন

copy_wdir aaa/deep/sea/blob.psd bbb/deep/sea/blob.psd

যাইহোক, জিএনইউয়ের cpএকটি --parentsবিকল্প রয়েছে। এটি আপনি যা চান তার কাছাকাছি, তবে ঠিক নয়।
এটি এমন aaaডিরেক্টরি তৈরি করবে যা মনে হয় আপনার প্রয়োজন নেই। তবে আপনি প্রথমে সিডি করতে aaaএবং কপি করতে পারেন:

cd aaa && cp --parents deep/sea/blob.psd ../bbb/

24

এটি ব্যবহার সহজ installথেকে প্রোগ্রামটি coreutils থাকে যা সাধারণত মত বিল্ড সিস্টেম কর্তৃক এই খুব উদ্দেশ্যে ব্যবহার করা হয় automake :

install -D /path/to/source /path/to/destination

লক্ষ্য করুন installসৃষ্টি সব পথ অংশগুলি ঠিক mkdir -pকরে, দেখতে man install। আমি কেন আগ্রহী যে আপনি কেন এটি করতে চান তা অন্তর্ভুক্ত করেননি । কলিং mkdirএবং cpখুব সহজ।


2
আমি মনে করি এই প্রশ্নের অনেক ভাল উত্তর আছে, তবে এটি সবচেয়ে ভোটযোগ্য হিসাবে এটি আমার ভোট পায়। rsyncউত্তরটি কেবল 1 টি ডিরেক্টরি তৈরি করবে এবং paxসাধারণ বলে মনে হয় না।
প্যাট্রিক

ম্যাকের -dপরিবর্তে ব্যবহার করুন -D
ম্যাট এম।

নোট করুন যে এই কমান্ডটি 755( rwxr-xr-x) অনুমতি নিয়ে গন্তব্য ফাইলগুলি তৈরি করে যা সম্ভবত পছন্দসই নয়। আপনি -mস্যুইচ দিয়ে অন্য কিছু নির্দিষ্ট করতে পারেন, তবে আমি কেবল ফাইলের অনুমতি রাখার উপায় খুঁজে
পাইনি

6

স্ট্যান্ডার্ড (POSIX / ইউনিক্স) কমান্ড সহ, আপনি পেয়েছেন:

pax -rws ':^:dest/dir/:' file .

1
মজাদার. আমি আগে কখনও প্যাক্সের কথা শুনিনি। যদিও আমি এর ধারণা পছন্দ করি। দুর্ভাগ্যক্রমে যদিও এটি পসিএক্সে রয়েছে, এটি খুব কম ডিস্ট্রোই ডিফল্টরূপে ইনস্টল করে বলে মনে করে :-(
প্যাট্রিক

@ পেট্রিক - আপনি যদি শেষের দিকে সমস্ত দিক ছেড়ে যান - বহনযোগ্যতা উদ্বেগ বিভাগের info tarআশেপাশে - তবে আপনি মনে করেন যে আপনি জিএনইউ সম্পূর্ণরূপে সামঞ্জস্যপূর্ণ বলে দাবি করেছেন । আমি যাই হোক না কেন করেছি, যদিও আমি এখনও এই দাবিগুলি পরীক্ষায় ফেলতে পারি নি। tarpax
মাইকজার্ভ

5

এটি ব্যবহারের কোনও উপায় সম্পর্কে আমি অবগত নই cp, তবে অবশ্যই এটি ব্যবহার করা সম্ভব rsync:

$ rsync sourcefile dir/

dirএকটি ডিরেক্টরি যেখানে বিদ্যমান নেই। অন্যান্য কমান্ড ব্যবহার করে একই অর্জনের প্রচুর অন্যান্য উপায় রয়েছে।


3
আপনাকে rsync -Rডিরেক্টরি
উত্তরাধিকারী

@glennjackman প্রকৃতপক্ষে, 'সঠিক' ব্যবহারের rsyncআরও বিকল্প প্রয়োজন, তবে প্রশ্নটি কেবল একটি অস্তিত্বহীন লক্ষ্য ডিরেক্টরি তৈরি করার বিষয়ে ছিল, সুতরাং আমার সংক্ষিপ্ত উত্তর :)
এমজেটার্নার

1
অন্তত গনুহ cpহয়েছে --parentsবিকল্প।
পিটার্ফ

2
@ পেটার্ফ প্রকৃতপক্ষে, তবে তারপরে আপনি লক্ষ্য ডিরেক্টরিটির নামকরণে সীমাবদ্ধ
রয়েছেন

4
cd aaa
pax -rw deep/sea/blob.psd ../bbb

আপনার যদি না থাকে pax(এটি সিওপিও এবং টারের মানক হিসাবে প্রতিস্থাপনের হিসাবে এটি পসিক্স দ্বারা জারি করা হয়েছে যার মানককরণের অনেক বেশি অসুবিধাগুলি ছিল), ব্যবহার করুন cpio -pবা tar -cf - … | tar -xf -পরিবর্তে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.