সুতরাং, আপনি *
যখন 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