ডিরেক্টরি কপি করতে এবং এর মধ্যে নির্দিষ্ট ফাইল / উপ-ডিরেক্টরিগুলি বাদ দেওয়ার জন্য 'সিপি' কমান্ড ব্যবহার করার কোনও উপায় আছে কি?
ডিরেক্টরি কপি করতে এবং এর মধ্যে নির্দিষ্ট ফাইল / উপ-ডিরেক্টরিগুলি বাদ দেওয়ার জন্য 'সিপি' কমান্ড ব্যবহার করার কোনও উপায় আছে কি?
উত্তর:
ব্যবহার rsync:
rsync -avr --exclude='path1/to/exclude' --exclude='path2/to/exclude' source destination
নোট করুন যে ব্যবহার sourceএবং source/পৃথক। একটি পিছনে স্ল্যাশ মানে ফোল্ডারে থাকা সামগ্রীগুলি অনুলিপি sourceকরা destination। পেছনের স্ল্যাশ ছাড়া এটির অর্থ ফোল্ডারের উত্সটি অনুলিপি করা destination।
বিকল্পভাবে, যদি আপনার বাদ দেওয়ার জন্য প্রচুর ডিরেক্টরি (বা ফাইল) থাকে তবে আপনি ব্যবহার করতে পারেন --exclude-from=FILE, যেখানে FILEফাইল বা ডিরেক্টরিগুলি অন্তর্ভুক্ত করার কোনও ফাইলের নাম নেই।
--exclude এছাড়াও ওয়াইল্ডকার্ড থাকতে পারে --exclude=*/.svn*
অনুলিপি: https://stackoverflow.com/a/2194500/749232
আপনি যদি cpনিজেই ব্যবহার করতে চান :
find . -type f -not -iname '*/not-from-here/*' -exec cp '{}' '/dest/{}' ';'
এটি ধরে নেয় টার্গেট ডিরেক্টরি কাঠামো উত্সের মতোই।
অনুলিপি করা হয়েছে: https://stackoverflow.com/a/4586025/749232
গেমটিতে দেরীতে হলেও এখানে প্লেইন ব্যাশ এবং সিপি ব্যবহার করে একেবারেই আলাদা সমাধান দেওয়া হচ্ছে: কিছু ফাইল উপেক্ষা করার সময় আপনি একটি গ্লোবাল ফাইলের স্পেসিফিকেশন ব্যবহার করতে পারেন।
ধরে নিন ডিরেক্টরিতে ফাইল রয়েছে:
$ ls *
listed1 listed2 listed3 listed4 unlisted1 unlisted2 unlisted3
গ্লোবগনোর ভেরিয়েবল ব্যবহার করা :
$ export GLOBIGNORE='unlisted*'
$ ls *
listed1 listed2 listed3 listed4
বা আরও নির্দিষ্ট ব্যতিক্রম সহ:
$ export GLOBIGNORE='unlisted1:unlisted2'
$ ls *
listed1 listed2 listed3 listed4 unlisted3
বা নেতিবাচক মিলগুলি ব্যবহার করে :
$ ls !(unlisted*)
listed1 listed2 listed3 listed4
এটি বেশ কয়েকটি মিলহীন নিদর্শনগুলিকে সমর্থন করে:
$ ls !(unlisted1|unlisted2)
listed1 listed2 listed3 listed4 unlisted3
shopt -s extglobএছাড়াও আপনার রফতানি করার দরকার নেইGLOBIGNORE: এটি বর্তমান শেলের আচরণটি পরিবর্তন করার কথা, বেশিরভাগ শিশু প্রোগ্রামগুলি এটিকে যত্ন করে না।