সুতরাং, আপনি *যখন cpকোনও ডিরেক্টরি প্রসঙ্গে ব্যবহার করতে পারেন তখন সমস্ত ফাইলের জন্য ওয়াইল্ড কার্ড হিসাবে এটি ব্যবহার করতে পারেন । ফাইল ছাড়া সব ফাইল অনুলিপি করার উপায় আছে x?
সুতরাং, আপনি *যখন cpকোনও ডিরেক্টরি প্রসঙ্গে ব্যবহার করতে পারেন তখন সমস্ত ফাইলের জন্য ওয়াইল্ড কার্ড হিসাবে এটি ব্যবহার করতে পারেন । ফাইল ছাড়া সব ফাইল অনুলিপি করার উপায় আছে x?
উত্তর:
ইন bashআপনি ব্যবহার করতে পারেন extglob:
$ shopt -s extglob # to enable extglob
$ cp !(b*) new_dir/
যেখানে !(b*)সমস্ত b*ফাইল বাদ দিন ।
আপনি পরে নিষ্ক্রিয় করতে পারেন extglobসঙ্গে
$ shopt -u extglob
findযে একমাত্র উপায় tcsh:find . -maxdepth 1 ! -name "exclude*" -exec cp -t destination {} \+
Rsync এটিকে সুন্দরভাবে পরিচালনা করে।
উদাহরণ সমস্ত কপি: rsync -aP /folder1/* /folder/2
বর্জন সহ সমস্ত অনুলিপি উদাহরণ: rsync -aP --exclude=x /folder1/* /folder2/
-aPসুইচ:
a: অনুরূপ cp -a, পুনরাবৃত্ত হওয়া ইত্যাদি P
-rPপরিবর্তে ব্যবহার করুন -aP। -aসংরক্ষণাগার জন্য। এটি পরিবর্তন হয়েছে কিনা তা নিশ্চিত নয় বা MacOS এ এটি অন্যরকম কিনা।
rsyncএটি পুনরাবৃত্তি করার বিকল্প আছে। উদাহরণ: rsync --recursive -P --exclude=x /folder1/* /folder2/। (কেবল উবুন্টুতে পরীক্ষিত)
এটি কোনও বৈশিষ্ট্য নয় cp, এটি আপনার শেলের একটি বৈশিষ্ট্য (এটি *সমস্ত নন-ডট ফাইল বোঝাতে প্রসারিত হয় ), সুতরাং উত্তরটি আপনি কোন শেলটি ব্যবহার করছেন তার উপর নির্ভর করে। উদাহরণস্বরূপ, zshএই বাক্য গঠনটি সমর্থন করে:
$ cp ^x /path/to/destination
কোথায় ^xমানে "ছাড়া সমস্ত ফাইল x"
আপনি নির্বাচন এবং ডি-সিলেকশন নিদর্শনগুলিও একত্রিত করতে পারেন, উদাহরণস্বরূপ xyz থাকা ব্যতীত সমস্ত ওয়াভ ফাইলগুলি অনুলিপি করতে, আপনি ব্যবহার করতে পারেন:
cp *.wav~*xyz*
bash?
উন্নত শেল গ্লোব্বিং বা বিল্ট-ইন-বর্জন বিকল্পগুলির সাথে কমান্ডগুলি ব্যবহারের চেয়ে স্ট্যান্ডল ওল্ড (পোর্টেবল / সামঞ্জস্যপূর্ণ) বোর্ন শেলকে স্ট্যান্ডার্ড সরঞ্জামগুলির সাথে অনেক কম মার্জিত উপায়ে ব্যবহার করা যেতে পারে।
যদি খুব বেশি ফাইল না থাকে (এবং শূন্যস্থান এবং / অথবা লাইন ব্রেকগুলি সহ নামগুলি না থাকে), এটি একটি উপায় হতে পারে:
cp `ls | egrep -v '^excludename$'` destdir/.
অবশ্যই, bashএবং জিএনইউ সরঞ্জামগুলি দুর্দান্ত এবং শক্তিশালী, তবে সেগুলি এখনও সর্বদা পাওয়া যায় না। যদি আপনি এটি কোনও পোর্টেবল স্ক্রিপ্টে রাখার ইচ্ছা করেন তবে আমি findরাশ এর মন্তব্যে সুপারিশ করব ।
যদি আপনি কোনও ফোল্ডারে (সাবফোল্ডার সহ) সমস্ত কিছু একটি নির্দিষ্ট উপ-ডিরেক্টরিতে অনুলিপি করতে চান:
cp -R $(ls | grep -v '^subdir$') subdir/
Sh, bash, zsh (কমপক্ষে) দিয়ে কাজ করে।
cp -R * subdir/
cpথেকে bash/ থেকে নয় sh" cp: cannot copy a directory, ‘subdir’, into itself, ‘subdir/subdir’" থেকে সতর্কতা এড়ানোর চেষ্টা করে । যদিও অনুলিপিটি সঠিকভাবে সম্পূর্ণ হয়। দুর্ভাগ্যক্রমে আপনার রূপটি কোনও স্থান বা শেল-সংবেদনশীল বিরামচিহ্নযুক্ত কোনও ফাইলের সাথে বিরতি। দেখুন unix.stackexchange.com/q/128985/135943
extglob আমার মনে হয় এখন পর্যন্ত সবচেয়ে ভাল উপায়।
আরেকটি উপায় ব্যবহার করা হয়
cp $(ls --ignore=x) subdir/
$ইত্যাদি) এর আউটপুটটিকে কখনই পার্স করবেন না ls। unix.stackexchange.com/q/128985/135943