আমি ডিফল্ট.পিএনজি নামের একটি ব্যতীত সমস্ত ফাইল একটি ডিয়ারের বাইরে অনুলিপি করতে চাই। দেখে মনে হচ্ছে এটি করার জন্য বেশ কয়েকটি উপায় রয়েছে। আপনি সবচেয়ে কার্যকর বলে মনে হচ্ছে?
আমি ডিফল্ট.পিএনজি নামের একটি ব্যতীত সমস্ত ফাইল একটি ডিয়ারের বাইরে অনুলিপি করতে চাই। দেখে মনে হচ্ছে এটি করার জন্য বেশ কয়েকটি উপায় রয়েছে। আপনি সবচেয়ে কার্যকর বলে মনে হচ্ছে?
উত্তর:
সরল, যদি 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/ {} +
\;
প্রতি ফাইল প্রতি কমান্ড কার্যকর করে। +
কমান্ডটি একবার চালায় এবং সমস্ত ফাইলের নাম একবারে এটি পাস করে (কমান্ড লাইনের দৈর্ঘ্যের সীমা সাপেক্ষে)। +
সাধারণভাবে কিছুটা দক্ষ।
নিম্নলিখিত হিসাবে হওয়া উচিত:
cp -r !(Default.png) /dest
যদি বর্তমান ফোল্ডারে নেস্ট করা কোনও ফোল্ডারে অনুলিপি করা হয় (নীচের ক্ষেত্রে উদাহরণ হিসাবে বলা হয়) আপনাকেও সেই ডিরেক্টরিটি বাদ দিতে হবে:
cp -r !(Default.png|example) /example
shopt -s extglob
অক্ষম করা থাকলে এটি কাজ করা প্রয়োজন ।
shopt -s extglob
@ ব্যারিকিলি বর্ণিত ওএস এক্স ব্যবহার করা উচিত। যে, এটি নিখুঁতভাবে কাজ করে।
!()
... সুন্দর! ঐ যে --like মনে আমার জন্য এটা অধ্যয়ন / পর্যালোচনা করার সময় ব্যাশ , এখানে প্রাসঙ্গিক এই প্রশ্নের / উত্তর এর সাথে সম্পর্কিত লিঙ্ক আছে: shopt / extglob এবং প্যাটার্ন ।
আরএসআইএনসি দীর্ঘদিন ধরে আমার সিপি / এসসিপি প্রতিস্থাপন ছিল:
rsync -av from/ to/ --exclude=Default.png
-a, --archive archive mode; equals -rlptgoD (no -H,-A,-X)
-v, --verbose increase verbosity
-r
আপনি ডিরেক্টরিগুলি সিঙ্ক করছেন তবে আরগটি ভুলে যাবেন না
আমি শুধু করতাম:
cp srcdir/* destdir/ ; rm destdir/Default.png
ফাইলগুলি বড় না হলে অন্যথায় যেমন ব্যবহার করুন
find srcdir -type f/ |grep -v Default.png$ |xargs -ILIST cp LIST destdir/
Default.png
দুটি ডিরেক্টরিতে বিদ্যমান থাকে তবে এটি একটিতে একটি destdir
দ্বারা প্রতিস্থাপন করবে srcdir
, তারপরে অনুলিপিটি মুছুন Default.png
। পরিবর্তে, ওপি Default.png
ইতিমধ্যে এটি বিদ্যমান রাখতে চায় destdir
।
এটি নোড মডিউলগুলি ব্যতীত সমস্ত কিছু অনুলিপি করার জন্য দুর্দান্ত কাজ করেছে :) উপভোগ করুন এবং উপরের উত্তরগুলির জন্য ধন্যবাদ যা আমি এটিতে যুক্ত করেছি। Rsync আমার মতে সিপির চেয়ে ভাল কারণ আপনি এটি না চেয়ে প্রগতি বার দেখতে পারেন।
rsync -av fromDirectory/ ToDirectory/ --exclude=node_modules
cp `ls | grep -v Default.png` destdir
# chattr +i /files_to_exclude
# cp source destination
# chattr -i /files_to_exclude
রেগেক্সের সাথে শেলের সম্প্রসারণ পরামিতি ব্যবহার করুন
cp /<path>/[^not_to_copy_file]* .
নোট_কপি_ফাইলে বাদে সবকিছু অনুলিপি করা হবে
- যদি এতে কিছু ভুল হয়। নির্ধারন করুন !
[...]
) অক্ষরগুলির মিলের জন্য একটি সেট ধারণ করে, যখন একটি শীর্ষস্থানীয় ^
তালিকাভুক্ত অক্ষরের পরিপূরকগুলির একটি মিল তৈরি করে। নিম্নলিখিত উদাহরণে, তন্ন তন্ন ফাইল তালিকাভুক্ত হবে: touch not_to_copy_file to_copy_file ; ls [^not_to_copy_file]*
কারণ সব ফাইলের নামের নিম্নলিখিত অক্ষরগুলি কোন দিয়ে শুরু বাদ দেওয়া হবে: _cefilnopty
।