ফাইল এবং ডিরেক্টরিগুলির সাথে নতুন নামকরণ করুন find -execdir | rename
আপনি যদি কেবল দুটি প্রত্যয় না দিয়ে ফাইল এবং ডিরেক্টরি দুটিরই নাম পরিবর্তন করতে চলেছেন তবে এটি একটি ভাল প্যাটার্ন:
PATH="$(echo "$PATH" | sed -E 's/(^|:)[^\/][^:]*//g')" \
find . -depth -execdir rename 's/findme/replaceme/' '{}' \;
ভয়ঙ্কর -execdirবিকল্পটি কমান্ডটি cdকার্যকর করার পূর্বে ডিরেক্টরিটিতে একটি করে তোলে rename, বিপরীত -exec।
-depth হারিয়ে যাওয়া অভিভাবক ডিরেক্টরিগুলির সাথে সম্ভাব্য সমস্যাগুলি রোধ করার জন্য পুনরায় নামকরণটি শিশুদের এবং তারপরে পিতামাতার উপর ঘটে তা নিশ্চিত করুন।
-execdir প্রয়োজনীয় কারণ নন-বেসনাম ইনপুট পাথগুলির সাথে নামটি ভাল খেলতে পারে না, যেমন নিম্নলিখিত ব্যর্থতা:
rename 's/findme/replaceme/g' acc/acc
PATHহ্যাকিং প্রয়োজনীয় কারণ -execdirএক খুব বিরক্তিকর অপূর্ণতা আছে: findঅত্যন্ত একগুঁয়ে হয় এবং নিয়ে কিছু করতে রাজি -execdirযদি আপনি আপনার যে কোন আপেক্ষিক পাথ আছে PATHএনভায়রনমেন্ট ভেরিয়েবল, যেমন ./node_modules/.bin, সঙ্গে ব্যর্থ:
সন্ধান করুন: আপেক্ষিক পথ './node_modules/.bin' PATH এনভায়রনমেন্ট ভেরিয়েবলের মধ্যে অন্তর্ভুক্ত করা হয়েছে, যা সন্ধানের-এক্সেকডির পদক্ষেপের সাথে একাত্মকভাবে সুরক্ষিত। দয়া করে entry PATH থেকে এন্ট্রিটি সরিয়ে দিন
আরও দেখুন: /ubuntu/621132/why- using-the-execdir-action-is-insecure-for-directory-Wich-is-in-the-path / 1109378#1109378
-execdirPOSIX- এ GNU অনুসন্ধান এক্সটেনশন । renameপার্ল ভিত্তিক এবং renameপ্যাকেজ থেকে আসে । উবুন্টুতে পরীক্ষা করা হয়েছে 18.10।
চেহারা অনুসারে নতুন নামকরণ করুন
যদি আপনার ইনপুট পাথগুলি আসে না find, বা যদি আপনার কাছে আপেক্ষিক পাথর বিরক্তি যথেষ্ট পরিমাণে থাকে তবে আমরা কিছু পার্ল লুক হেড ব্যবহার করতে পারি ডিরেক্টরিগুলি নিরাপদে নামকরণ করতে:
git ls-files | sort -r | xargs rename 's/findme(?!.*\/)\/?$/replaceme/g' '{}'
আমি একটি সুবিধাজনক অ্যানালগ খুঁজে পেলাম না -execdirসঙ্গে xargs: xargs: পরিবর্তন চালানোর আগে ফাইল পথে ডিরেক্টরির কাজ করেন?
sort -rতা নিশ্চিত করার জন্য ফাইল, তাদের নিজ নিজ ডিরেক্টরি পরে আসা যেহেতু আর পাথ একই প্রেফিক্স সহ খাটো বেশী পরে আসা প্রয়োজন।
renameবা রেড হ্যাট রয়েছেrename?