find /path/to/directory -type f -name "*:*" -exec rename -n 's/:/-/g' {} +
(যদি এই আদেশটি আপনার পক্ষে কাজ করে না, তবে এই উত্তরের শেষে সামঞ্জস্যতা নোটটি দেখুন))
এটি একটি প্রাথমিক নিরাপদ সংস্করণ যা কেবল যা ঘটে তা মুদ্রণ করে। এটি করতে আসলে -nবিকল্প থেকে মুক্তি পান ।
এটি ছাড়াই কাজ করবে -name "*:*"তবে findকেবলমাত্র ফাইল নামগুলিই পরিবর্তন করা উচিত যা পরিবর্তিত হওয়া উচিত কারণ এটি পুরো কমান্ডটিকে দ্রুত করে তোলে।
এটি এর মতো কাজ করে:
find খুঁজে বের করে ...
- ...
/path/to/directoryদির ...
- ... সমস্ত ফাইল (
-type f) ...
- ... মিলে যাওয়া নামগুলির সাথে (
-name "*:*"), ...
- ... তারপরে কার্যকর করা
rename(একাধিকবার প্রয়োজন হলে) ...
- ...
:দ্বারা প্রতিস্থাপন প্যাটার্ন দিয়ে -...
- ... সমস্ত ফাইল পাওয়া গেছে, একযোগে একাধিক ফাইল (
{} +)।
নোট:
- কমান্ড ডিরেক্টরিগুলির নাম পরিবর্তন করে না এবং এটি নকশা দ্বারা।
- পুনর্নামকরণ ফাইলের নাম (যেমন নিউলাইন) এর কিছু অস্বাভাবিক অক্ষরের সাথে কাজ করতে পারে না। অবশ্যই সেখানে আপনার কোনও ফাইলের নাম নেই তাই এটি বরং একটি আনুষ্ঠানিক নোট।
সামঞ্জস্য নোট
সমাধানটি ডাবিয়ান, উবুন্টুতে উপলব্ধ প্যাকেজ renameথেকে পার্ল স্ক্রিপ্ট ব্যবহার renameকরে। অন্যান্য ডিস্ট্রো থাকতে পারে renameথেকে util-linux।
এই ম্যানুয়ালটি পরামর্শ দেয় যে নন পার্লের সমাধান renameহওয়া উচিত:
find /path/to/directory -type f -name "*:*" -execdir rename -n ':' '-' {} +
(আবার, -nযদি এটি ঠিক দেখাচ্ছে তবে অপসারণ করুন )) যদিও আমি এটি পরীক্ষা করেছি না। আমি মনে করি এটি কোনও ফাইলনামে কেবল প্রথম কলোনকে প্রতিস্থাপন করবে। কোনও ক্যালোন বাকী না হওয়া অবধি কমান্ডটি (ছাড়া -n, সাথে -v) পুনরাবৃত্তি করা একটি কর্মপরিকল্পনা ।
বিকল্পভাবে আপনি এই সাইটে উপলব্ধ একটি সংরক্ষণাগার থেকে পার্ল স্ক্রিপ্ট পেতে পারেন (বর্তমানে File-Rename-0.20.tar.gz, স্ক্রিপ্টটির নাম দেওয়া হয়েছে rename.PL)। আরও দেখুন এই প্রশ্নের ।