একটি ব্যতীত সমস্ত ফাইল অনুলিপি করুন


109

আমি ডিফল্ট.পিএনজি নামের একটি ব্যতীত সমস্ত ফাইল একটি ডিয়ারের বাইরে অনুলিপি করতে চাই। দেখে মনে হচ্ছে এটি করার জন্য বেশ কয়েকটি উপায় রয়েছে। আপনি সবচেয়ে কার্যকর বলে মনে হচ্ছে?


অনুলিপিটি অনুলিপি করার পরে কেবল ফাইলটি মুছে ফেলার বিপরীতে আপনার কেন এটি দরকার? এটি ইতিমধ্যে লক্ষ্য ডিরেক্টরিতে বিদ্যমান?
ল্যাসে ভি কার্লসেন

1
হ্যাঁ একই নামের একটি ফাইল ইতিমধ্যে টার্গেট ডিয়ারে বসবাস করছে।
জো কন্নতি

@ লাসেভি.কার্লসেন: বা আপনি এটি অনুলিপি করার সময় বাঁচাতে চান, যদি এটি কোনও বড় ফাইল হয়। আমি এতে আগ্রহী কিন্তু ফাইলের চেয়ে ডিরেক্টরি বাদ দিয়ে।
নিকানা রেকলাভিক্স

উত্তর:


54

সরল, যদি src/কেবলমাত্র ফাইল থাকে:

find src/ ! -name Default.png -exec cp -t dest/ {} +

যদি src/উপ-ডিরেক্টরি থাকে তবে এটি সেগুলি বাদ দেয় তবে এর মধ্যে ফাইলগুলি অনুলিপি করে:

find src/ -type f ! -name Default.png -exec cp -t dest/ {} +

যদি src/উপ-ডিরেক্টরি থাকে তবে এটি তাদের মধ্যে পুনরাবৃত্তি করে না:

find src/ -type f -maxdepth 1 ! -name Default.png -exec cp -t dest/ {} +

5
এটি আমার পক্ষে সেরা হিসাবে প্রমাণিত হয়েছে কারণ এটি প্রদর্শিত হবে যে গ্লোব সক্ষম না করে ওএস এক্স জাহাজগুলি।
জো কন্নতি

6
@ ম্যাক্স \;প্রতি ফাইল প্রতি কমান্ড কার্যকর করে। +কমান্ডটি একবার চালায় এবং সমস্ত ফাইলের নাম একবারে এটি পাস করে (কমান্ড লাইনের দৈর্ঘ্যের সীমা সাপেক্ষে)। +সাধারণভাবে কিছুটা দক্ষ।
জন কুগেলম্যান

148

নিম্নলিখিত হিসাবে হওয়া উচিত:

cp -r !(Default.png) /dest

যদি বর্তমান ফোল্ডারে নেস্ট করা কোনও ফোল্ডারে অনুলিপি করা হয় (নীচের ক্ষেত্রে উদাহরণ হিসাবে বলা হয়) আপনাকেও সেই ডিরেক্টরিটি বাদ দিতে হবে:

cp -r !(Default.png|example) /example

16
এটি উত্পাদন করে -বাশ:!: ইভেন্টটি পাওয়া যায় নি
জো ক্যাননাটি

আপনি যে ফোল্ডারটি অনুলিপি করছেন সেই ফোল্ডারের ভিতরে থাকা কোনও ফোল্ডারে ফাইলগুলি অনুলিপি করছেন?
জন

46
এটি shopt -s extglobঅক্ষম করা থাকলে এটি কাজ করা প্রয়োজন ।
ব্যারি কেলি

5
দেখে মনে হচ্ছে shopt -s extglob@ ব্যারিকিলি বর্ণিত ওএস এক্স ব্যবহার করা উচিত। যে, এটি নিখুঁতভাবে কাজ করে।
ক্যাট

বছর বাশ এবং সম্পর্কে জানত না !()... সুন্দর! ঐ যে --like মনে আমার জন্য এটা অধ্যয়ন / পর্যালোচনা করার সময় ব্যাশ , এখানে প্রাসঙ্গিক এই প্রশ্নের / উত্তর এর সাথে সম্পর্কিত লিঙ্ক আছে: shopt / extglob এবং প্যাটার্ন
ব্র্যান্ডেট

73

আরএসআইএনসি দীর্ঘদিন ধরে আমার সিপি / এসসিপি প্রতিস্থাপন ছিল:

rsync -av from/ to/ --exclude=Default.png

-a, --archive               archive mode; equals -rlptgoD (no -H,-A,-X)
-v, --verbose               increase verbosity

আমি যদি দুটি ভিন্ন ফাইল বাদ দিতে চাই তবে আমি কীভাবে এটি ব্যবহার করব?
পুলকিত বানসাল

একাধিক --excolve = আর্গুমেন্ট সমর্থিত। -rআপনি ডিরেক্টরিগুলি সিঙ্ক করছেন তবে আরগটি ভুলে যাবেন না
রিয়ান স্যান্ডারসন

5

আমি শুধু করতাম:

cp srcdir/* destdir/ ; rm destdir/Default.png

ফাইলগুলি বড় না হলে অন্যথায় যেমন ব্যবহার করুন

find srcdir -type f/ |grep -v Default.png$ |xargs -ILIST cp LIST destdir/

1
প্রথম কমান্ড ওপি যা চেয়েছিল তা নয়। যদি Default.pngদুটি ডিরেক্টরিতে বিদ্যমান থাকে তবে এটি একটিতে একটি destdirদ্বারা প্রতিস্থাপন করবে srcdir, তারপরে অনুলিপিটি মুছুন Default.png। পরিবর্তে, ওপি Default.pngইতিমধ্যে এটি বিদ্যমান রাখতে চায় destdir
স্নোফ্রোগ

2
ডিফল্টে ইতিমধ্যে কীভাবে ডিফল্ট.পিএনএল বিদ্যমান? আপনার solutesoun কাজ করবে না।
ইমান মোহামাদি

2

এটি নোড মডিউলগুলি ব্যতীত সমস্ত কিছু অনুলিপি করার জন্য দুর্দান্ত কাজ করেছে :) উপভোগ করুন এবং উপরের উত্তরগুলির জন্য ধন্যবাদ যা আমি এটিতে যুক্ত করেছি। Rsync আমার মতে সিপির চেয়ে ভাল কারণ আপনি এটি না চেয়ে প্রগতি বার দেখতে পারেন।

   rsync -av fromDirectory/ ToDirectory/ --exclude=node_modules



-2

রেগেক্সের সাথে শেলের সম্প্রসারণ পরামিতি ব্যবহার করুন

cp /<path>/[^not_to_copy_file]* .

নোট_কপি_ফাইলে বাদে সবকিছু অনুলিপি করা হবে

- যদি এতে কিছু ভুল হয়। নির্ধারন করুন !


1
তাই আপনাকে স্বাগতম। দুর্ভাগ্যক্রমে আপনার উত্তর সঠিক নয়। ব্র্যাকেট এক্সপ্রেশন ( [...]) অক্ষরগুলির মিলের জন্য একটি সেট ধারণ করে, যখন একটি শীর্ষস্থানীয় ^তালিকাভুক্ত অক্ষরের পরিপূরকগুলির একটি মিল তৈরি করে। নিম্নলিখিত উদাহরণে, তন্ন তন্ন ফাইল তালিকাভুক্ত হবে: touch not_to_copy_file to_copy_file ; ls [^not_to_copy_file]*কারণ সব ফাইলের নামের নিম্নলিখিত অক্ষরগুলি কোন দিয়ে শুরু বাদ দেওয়া হবে: _cefilnopty
rtx13
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.