Name -exec` এবং `xargs` ব্যবহার করার সময় ড্যাশ (" - ") দিয়ে শুরু হওয়া ফাইল নামগুলির সাথে মোকাবিলা করা


2

আমি এই প্রশ্নটি অনুসরণ করছি যদিও এখানে ফাইলের নামের কিছুতে ফাইলের নামের শুরুতে একটি ড্যাশ রয়েছে। এটি অতিরিক্ত বিকল্প হিসাবে ব্যাখ্যা করা হয় cp

অন্য একটি প্রশ্ন অনুসরণ করে (সার্ভারফল্টে) , আমি এই আদেশটি পরিবর্তনের চেষ্টা করেছি:

shuf -zn8 -e *.jpg | xargs -0 cp -vt -- {} target/ 

অথবা

shuf -zn8 -e *.jpg -exec cp -vt -- {} target/

কোন লাভ নেই। -ফাইলনামের শুরুতে আমি কীভাবে সামলাতে পারি ?


উত্তর:


3

-tবিকল্প (ক গনুহ এক্সটেনশন) একটি আর্গুমেন্ট যা লক্ষ্যবস্তু ডিরেক্টরির বেশি সময় লাগে।

এর সাথে xargs -0 cp -vt -- target/, এটি target/ডাকা ডিরেক্টরিতে নির্বাচিত ফাইলগুলি অনুলিপি করার চেষ্টা করবে --এবং আপনি এখনও বিকল্পগুলির শেষ চিহ্নিত না করে থাকতে পারেন। আপনার shufপাশাপাশি বিকল্পগুলির শেষটি চিহ্নিত করতে হবে ।

{}এটি কেবলমাত্র find' -execপ্রিডিকেট ' বা বিশেষত xargsআপনি যদি ব্যবহার করেন -I'{}'তবে তা বিশেষ is shufকোন হয়েছে -execসম্পৃক্ত।

এখানে, আপনি চাইবেন:

shuf -zen8 -- *.jpg | xargs -r0 cp -vt target --

অথবা

shuf -zen8 ./*.jpg | xargs -r0 cp -vt target

এর সাথে zsh, আপনি এর eএক্সপ্রেশন ভিত্তিক oরডারিং গ্লোব কোয়ালিফায়ার ব্যবহার করতে পারেন :

cp -v -- *.jpg(oe['REPLY=$RANDOM'][1,8]) target/

যে shufকোনও সিস্টেমে কাজ করার পদ্ধতির উপর এটির সুবিধা রয়েছে (সরবরাহিত zshইনস্টলড; আপনাকে -vকয়েকটি সিস্টেমে অ-মানক ছাড়তে হবে) এবং jpgবর্তমান ডিরেক্টরিতে দুটি ফাইল থাকা সত্ত্বেও এখনও কাজ করতে হবে (এবং কার্যকর করার shufফলে অনেকগুলি তর্ক ত্রুটির সাথে ব্যর্থ হবে )।


4

দেখে মনে হচ্ছে এটা কেমন shufনা cpযা ফাইলের নামের একটি ড্যাশ দিয়ে শুরু সঙ্গে সংগ্রাম করা হয়। shufকমান্ডটিতে ডাবল-ড্যাশ যুক্ত করার চেষ্টা করুন :

shuf -zn8 -e -- *.jpg | xargs -0I{} cp -vt -- "{}" target/ 

আমি এটির findপরিবর্তে এর জন্য ব্যবহার করব shuf:

find . -type f -name '*.jpg' -print0 | xargs -0I{} cp "{}" target/

এছাড়াও cpএই ক্ষেত্রে আপনার ডাবল ড্যাশ লাগবে না কারণ উপসর্গযুক্ত findফাইলের ./নামটি ফিরে আসবে ।


findএলোমেলো ফাইল বা প্রথম ফাইলগুলি অনুলিপি করবে ?
হাওয়ভোক

আহ ঠিক আছে shufআপনি যদি এলোমেলো হতে চান তবে ব্যবহার করুন
মরিচা শ্যাকলফোর্ড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.