পুনরাবৃত্তভাবে একটি কোলনযুক্ত সমস্ত ফাইলের নাম খুঁজে বের করতে এবং কোলনকে একটি ড্যাশ দিয়ে প্রতিস্থাপন করতে হবে?


2

আমার একটি ডিরেক্টরি 'মেইন' রয়েছে যার মধ্যে অনেকগুলি উপ-ডিরেক্টরি রয়েছে এবং এর মধ্যে কয়েকটি উপ-ডিরেক্টরিতে আমার ফাইলের নাম রয়েছে যাতে একটি কোলন থাকে। আমি লিনাক্সের একটি গিটহাব সংগ্রহস্থলে 'প্রধান' ডিরেক্টরিটি আপলোড করেছি, তবে আমি তখন উইন্ডোজ মেশিনে এই সংগ্রহস্থলটি থেকে টানতে চেষ্টা করার সময় সমস্যার মধ্যে পড়েছিলাম, কারণ উইন্ডোজ ফাইলের নামগুলিতে কলোনকে অনুমতি দেয় না।

লিনাক্স টার্মিনালটি ব্যবহার করে আমি কীভাবে 'মূল' ডিরেক্টরিতে কলোন দিয়ে সমস্ত ফাইলের নামগুলি পুনরায় খুঁজে পেতে পারি এবং তারপরে কোলনটিকে একটি, বলি, ড্যাশ (-) অক্ষর দিয়ে প্রতিস্থাপন করব?

উত্তর:


5
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)। আরও দেখুন এই প্রশ্নের


..hmmm..আমি কমান্ডটি প্রবেশ করার সময় একটি ত্রুটি পাচ্ছি - নাম পরিবর্তন করুন: পর্যাপ্ত যুক্তি নেই। এটি -n বিকল্পের সাথে এবং ছাড়াও। কোন ধারণা কেন এটি কাজ করে না?
ইউরোકોডার

আমি যদি ফেডোরা ব্যবহার করি তবে তাতে কোনও পার্থক্য আসে।
ইউরোকডার

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