একটি ডিরেক্টরি থেকে বিদ্যমান ডিরেক্টরিতে ফাইলগুলি অনুলিপি করুন


248

ব্যাশে আমাকে এটি করা দরকার:

  1. একটি ডিরেক্টরিতে সমস্ত ফাইল নিন

  2. এগুলিকে একটি বিদ্যমান ডিরেক্টরিতে অনুলিপি করুন

আমি এটা কিভাবে করবো? আমি চেষ্টা করেছি cp -r t1 t2(টি 1 এবং টি 2 উভয়ই বিদ্যমান ডিরেক্টরি রয়েছে, টি 1 এর মধ্যে ফাইল রয়েছে) তবে এটি টি 2 এর ভিতরে টি 1 নামে একটি ডিরেক্টরি তৈরি করেছে, আমি এটি চাই না, সরাসরি টি 2 এর ভিতরে যাওয়ার জন্য আমার টি 1-তে ফাইলগুলি দরকার need আমি এটা কিভাবে করবো?


11
কেন এটি বন্ধ ছিল? এটি স্বেচ্ছাচারী হয় যদি বাশ কমান্ডটি অন্তর্নির্মিত বা বাহ্যিক কমান্ড হয় (যেমন প্রিন্টফ বেশিরভাগ সিস্টেমে উভয় হিসাবে উপস্থিত থাকে), সুতরাং cpপ্রশ্নগুলি bashপ্রশ্ন হিসাবে দেখা যায় , যা একটি প্রোগ্রামিং ভাষা। পাইথন প্রশ্নটি ফাইল অনুলিপিটি বন্ধ হতে দেখিনি।
সিরো সান্তিলি 郝海东 冠状 病 六四 事件 法轮功

একটি এই সময়ে দেখে নিন stackoverflow.com/questions/23698183/...
theGiallo

আমি ব্যাশ শেল কপি কমান্ডের বাক্য গঠন সম্পর্কে একটি অনুস্মারক সন্ধান করতে এসে পৌঁছেছি এবং আমি খুশি হয়ে জানাতে পারি যে এই উইন্ডোজ ইনস্টলেশনতে অন্তর্নিহিত এনটিএফএস ফাইল সিস্টেমের বিরুদ্ধে এই কমান্ডগুলি কাজ করবে বলে মনে হচ্ছে।
ডেভিড এ। গ্রে

উত্তর:


395

আপনি যা চান তা হ'ল:

cp -R t1/. t2/

শেষে বিন্দুটি এটিকে বর্তমান ডিরেক্টরিটির বিষয়বস্তু অনুলিপি করতে বলেছে, ডিরেক্টরিটি নিজেই নয়। এই পদ্ধতিতে লুকানো ফাইল এবং ফোল্ডারগুলিও অন্তর্ভুক্ত রয়েছে।


2
আমি এই সিনট্যাক্সটি সত্যিই পছন্দ করি তবে কিছু কারণে এটি কাজ করে না mv। কোন এক কেন জানেন না?
মার্টিন ভন উইট্টিচ

2
অ্যামেজিং। এই নথি কোথায়? এটি পসিক্স বা এক্সটেনশন?
সিরো সান্তিলি 郝海东 冠状 病 六四 事件 法轮功

9
@ সিরোস্যান্টিলি 六四 事件 法轮功 包 卓 轩 আপনি যদি একটি ডিরেক্টরি অনুলিপি করেন, সিপি একটি ডিরেক্টরি তৈরি করবে এবং এতে সমস্ত ফাইল অনুলিপি করবে। আপনি যদি "।" নামক ভান করা ফোল্ডারটি ব্যবহার করেন যা এটি ধারণ করে থাকা ডিরেক্টরিটির মতো, তবে অনুলিপিটি এইভাবে আচরণ করে। ধরা যাক t1 এ "ফাইল" নামে একটি ফাইল রয়েছে। সিপি "সিপি টি 1 /। / ফাইল টি 2 /./" এর সমান অপারেশনটি সম্পাদন করবে। এটি "।" ফোল্ডারটি অনুলিপি করছে, তবে ফাইলগুলিকে টি 2 এর মধ্যে অনুলিপি করছে। " ফোল্ডারটি "./" কেটে দেয় কারণ "t2 /./" "টি 2 /" এর সমান। প্রযুক্তিগতভাবে, এর অর্থ এটি পসিক্সটি আচরণে নির্মিত ... তবে সম্ভবত আপনি যেভাবে প্রত্যাশা করছেন তা নয়!
আঘাত করা

35

আপনি যদি একটি ডিরেক্টরি থেকে বর্তমান ডিরেক্টরিতে কিছু অনুলিপি করতে চান তবে এটি করুন:

cp dir1/* .

এটি ধরে নিয়েছে আপনি লুকানো ফাইলগুলি অনুলিপি করার চেষ্টা করছেন না।


20
লুকানো ফাইল মিস করে।
সিওরো সান্তিলি 郝海东 冠状 病 六四 事件 法轮功

1
এছাড়াও প্রচুর সংখ্যক ফাইলের জন্য ব্যর্থ হয় (কারণ '*' অসীম
পরিমাণে

32
cp dir1/* dir2

অথবা আপনার dir1 এর মধ্যে ডিরেক্টরি রয়েছে যা আপনি অনুলিপি করতে চান

cp -r dir1/* dir2

3
আপনার শেল কীভাবে কনফিগার করা হয়েছে তার উপর নির্ভর করে আপনি যদি লুকানো ফাইলগুলিও দেখতে চান তবে আপনার সম্ভবত "dir1 / * dir1 /.*" ব্যবহার করতে হবে।
ssokolow

2
অনুলিপি dir1/.*করা কোনও ভাল ধারণা নয়, কারণ এটি dir1 / .. অনুলিপি করে (যেমন আপনি যে ডিরেক্টরিটি অনুলিপি করার চেষ্টা করছেন তার পিতামাতা)। এটি dir1 / এ অনুলিপি করে। এটি ঠিক আছে, এটি ইতিমধ্যে (বেশিরভাগ) অনুলিপি করা বাদে আপনি কাজটি দু'বার করছেন।
গর্ডন ডেভিসন

1
আপনি dir1/.*যে ডিরেক্টরিটি থেকে অনুলিপি করতে চান তাতে সিডি-ইন করে আপনি / লুকানো ফাইলগুলির সমস্যা পেতে পারেন এবং তারপরে এটি উল্লেখ করে .। সুতরাং, আপনি যদি কোনও ডিরেক্টরি থেকে লুকানো ফাইলগুলি সহ সমস্ত ফাইলকে কোনও বিদ্যমান ডিরেক্টরিতে অনুলিপি করতে চান, আপনি: cd [source dir], cp . [path to destination dir, with no trailing slash]
রবডব্লিউ

8

ধরে নেওয়া t1 এর মধ্যে ফাইলগুলির ফোল্ডার, এবং t2 খালি ডিরেক্টরি। আপনি যা চান তা হ'ল কিছু:

sudo cp -R t1/* t2/

মনে রাখবেন, উদাহরণস্বরূপ, টি 1 এবং টি 2 পুরো পথ, বা আপেক্ষিক পাথ (আপনি যেখানে আছেন তার উপর ভিত্তি করে) হতে হবে। আপনি যদি চান, আপনি খালি ফোল্ডারে (টি 2) নেভিগেট করতে পারেন এবং এটি করতে পারেন:

sudo cp -R t1/* ./

অথবা আপনি ফাইল (টি 1) সহ ফোল্ডারে নেভিগেট করতে পারেন এবং এটি করতে পারেন:

sudo cp -R ./* t2/

দ্রষ্টব্য: * চিহ্ন (বা ওয়াইল্ডকার্ড) সমস্ত ফাইল এবং ফোল্ডারগুলির জন্য দাঁড়িয়ে। -আর পতাকাটি অর্থ পুনরাবৃত্তির সাথে (সমস্ত কিছুর অভ্যন্তরে)।


2
cp -R t1/ t2

উত্স ডিরেক্টরিতে চলমান স্ল্যাশ শব্দার্থকে কিছুটা পরিবর্তন করে, সুতরাং এটি সামগ্রীটি অনুলিপি করে তবে ডিরেক্টরিটি নিজেই নয়। বারট্র্যান্ডের উত্তরটিতে গ্লোবিং এবং অদৃশ্য ফাইলগুলির সমস্যাগুলিও এড়ানো হয়েছে (অনুলিপি t1/*ফাইলগুলি অনুলিপি করা, `t1 / * t1 /.* 'অনুলিপি t1 /। এবং t1 / .. অনুলিপি করা উচিত, যা আপনি চান না)।


আপনার সমাধানটি কাজ করে না, কমপক্ষে আমার ইনস্টলেশন ( $ mkdir t1 $ mkdir t2 $ touch t1/one $ touch t1/two $ touch t1/.three $ cp -R t1/ t2 $ ls t2/ t1 ওবুন্টু 12.10) এ নয় (দুঃখিত, মন্তব্যে কোনও কোডফর্ম্যাট নেই, পেস্টবিন.
com

2

কিছু বিশদের উপর নির্ভর করে আপনার এর মতো কিছু করতে হতে পারে:

r=$(pwd)
case "$TARG" in
    /*) p=$r;;
    *) p="";;
    esac
cd "$SRC" && cp -r . "$p/$TARG"
cd "$r"

... এটি মূলত এসআরসি ডিরেক্টরিতে পরিবর্তিত হয় এবং এটি লক্ষ্যে অনুলিপি করে, তারপরে আপনি যেখান থেকে শুরু করেছিলেন সেখানে ফিরে আসে।

অতিরিক্ত ফাসিং হ'ল আপেক্ষিক বা পরম টার্গেটগুলি পরিচালনা করা।

(এটি cpকমান্ডের নিজেই সূক্ষ্ম শব্দার্থবিজ্ঞানের উপর নির্ভর করে না ... এটি কীভাবে উত্সের বৈশিষ্ট্যগুলি কোনও চলমান সহ বা ব্যবহার ছাড়াই পরিচালনা করে / ... যেহেতু আমি নিশ্চিত না যে সেগুলি কেবল জিএনইউ cpএবং আই এর বাইরে স্থিতিশীল, বহনযোগ্য এবং নির্ভরযোগ্য) I'm তারা ভবিষ্যতে এ রকম চলতে থাকবে কিনা জানি না)।


1

কিছু ডিরেক্টরি অন্তর্ভুক্ত করার জন্য, এটি পূর্ণরূপে ব্যবহৃত হবে কারণ এটি "ফোল্ডার 1" থেকে কোনও ডিরেক্টরিতে নতুন ডিরেক্টরি "ফোল্ডার 2" এ সমস্ত সামগ্রী অনুলিপি করে।

p (pwd) বর্তমান ডিরেক্টরিতে পাথ পাবে।

ফোল্ডার 1 এর ভিতরে সমস্ত সামগ্রী পেতে ফোল্ডার 1 এর পরে বিন্দু (।) দেখুন

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