আরএসআইএনসি রিজেক্স কথা বলে না। আপনি এটি তালিকাভুক্ত করতে পারেন এবং গ্রেপ করতে পারেন, যদিও এটি সামান্য আরকেন পায়। লক্ষ্যযুক্ত ফাইলগুলি সন্ধান করতে:
find a/ |
grep -i 'name'
তবে এগুলি সবাই "এ /" দিয়ে উপস্থাপিত হয়েছে - যা বোঝা যায়, তবে আমরা যা শেষ করতে চাই তা হ'ল আরএসসিএনকে গ্রহণযোগ্য নিদর্শনগুলির একটি তালিকা রয়েছে এবং "এ /" উপসর্গটি আরএসআইএনসি I এর জন্য কাজ করে না এটি কাটা দিয়ে মুছে ফেলব:
find . |
grep -i 'name' |
cut -d / -f 2-
এখনও একটি সমস্যা আছে - আমরা এখনও উপ-ডিরেক্টরিগুলিতে ফাইলগুলি মিস করব, কারণ আরএসআইএনসি বাদ দেওয়া তালিকার ডিরেক্টরিগুলি অনুসন্ধান করে না। আমি প্যাটার্নগুলি অন্তর্ভুক্তের তালিকায় কোনও মিলে যাওয়া ফাইলের উপ-ডিরেক্টরিগুলি যুক্ত করতে বিশ্রী ব্যবহার করতে যাচ্ছি:
find a/ |
grep -i 'name' |
cut -d / -f 2- |
awk -F/ '{print; while(/\//) {sub("/[^/]*$", ""); print}}'
যা বাকি আছে তা হল তালিকাটি আরএসইএনসি-তে প্রেরণ করা - আমরা স্ট্যান্ডার্ড ইনপুটটিতে আরএসএনসি-তে নিদর্শনগুলির একটি তালিকা সরবরাহ করতে - যুক্ত - থেকে = - যুক্তিটি ব্যবহার করতে পারি। সুতরাং, পুরোপুরি:
find a/ |
grep -i 'name' |
cut -d / -f 2- |
awk -F/ '{print; while(/\//) {sub("/[^/]*$", ""); print}}' |
rsync -avvz --include-from=- --exclude='*' ./a/ ./b/
নোট করুন যে উত্স ডিরেক্টরি 'এ' দুটি পৃথক পাথের মাধ্যমে উল্লেখ করা হয় - "এ /" এবং "./a/"। এটি সূক্ষ্ম তবে গুরুত্বপূর্ণ। জিনিসগুলিকে আরও সুসংগত করতে আমি একটি চূড়ান্ত পরিবর্তন করতে যাচ্ছি, এবং সর্বদা উত্স ডিরেক্টরিটিকে "./a/" হিসাবে উল্লেখ করি। যাইহোক, এর অর্থ কাট কমান্ডটি পরিবর্তন করতে হবে কারণ ফলাফলগুলির সামনে ফলাফলের সামনে একটি অতিরিক্ত "./" থাকবে:
find ./a/ |
grep -i 'name' |
cut -d / -f 3- |
awk -F/ '{print; while(/\//) {sub("/[^/]*$", ""); print}}' |
rsync -avvz --include-from=- --exclude='*' ./a/ ./b/
--exclude='*'
?