ফাইল এবং ডিরেক্টরিগুলির সাথে নতুন নামকরণ করুন 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
-execdir
POSIX- এ GNU অনুসন্ধান এক্সটেনশন । rename
পার্ল ভিত্তিক এবং rename
প্যাকেজ থেকে আসে । উবুন্টুতে পরীক্ষা করা হয়েছে 18.10।
চেহারা অনুসারে নতুন নামকরণ করুন
যদি আপনার ইনপুট পাথগুলি আসে না find
, বা যদি আপনার কাছে আপেক্ষিক পাথর বিরক্তি যথেষ্ট পরিমাণে থাকে তবে আমরা কিছু পার্ল লুক হেড ব্যবহার করতে পারি ডিরেক্টরিগুলি নিরাপদে নামকরণ করতে:
git ls-files | sort -r | xargs rename 's/findme(?!.*\/)\/?$/replaceme/g' '{}'
আমি একটি সুবিধাজনক অ্যানালগ খুঁজে পেলাম না -execdir
সঙ্গে xargs
: xargs: পরিবর্তন চালানোর আগে ফাইল পথে ডিরেক্টরির কাজ করেন?
sort -r
তা নিশ্চিত করার জন্য ফাইল, তাদের নিজ নিজ ডিরেক্টরি পরে আসা যেহেতু আর পাথ একই প্রেফিক্স সহ খাটো বেশী পরে আসা প্রয়োজন।
rename
বা রেড হ্যাট রয়েছেrename
?