ফাইলের নাম থেকে উপসর্গগুলি সরান


10

নীচে আমার কাছে একগুচ্ছ ফাইল রয়েছে:

04602635_b0294.DAT20120807164534
04602637_b0297.DAT20120807164713
04602638_b0296.DAT20120807164637
04602639_b0299.DAT20120807164819
04602640_b0298.DAT20120807164748
04602641_b0300.DAT20120807164849
04602650_b0301.DAT20120807164921
04602652_b0302.DAT20120807164956

উপসর্গটি বাদ দেওয়ার জন্য তাদের নতুন নামকরণ করা দরকার। এটি দেখতে যেমন প্রয়োজন ..

b0294.DAT20120807164534
b0297.DAT20120807164713
b0296.DAT20120807164637
b0299.DAT20120807164819
b0298.DAT20120807164748
b0300.DAT20120807164849
b0301.DAT20120807164921
b0302.DAT20120807164956

সম্পাদনা

আমি যোগ করতে ভুলে গেছি যে আমি সোলারিস ব্যবহার করছি।

উত্তর:


19
for file in * ; do
    echo mv -v "$file" "${file#*_}"
done

সবকিছু ঠিক আছে তা সন্তুষ্ট করতে এটি চালান।
যদি এটি হয়, echoকমান্ড থেকে সরান এবং এটি আপনার ইচ্ছামত ফাইলগুলির নাম পরিবর্তন করবে।

"${file#*_}"

শেলের একটি সাধারণ প্রতিস্থাপন বৈশিষ্ট্য। এটি প্রথম _চিহ্নের আগে সমস্ত অক্ষর সরিয়ে দেয় (প্রতীকটি নিজেই সহ)। আরো জানার জন্য বিস্তারিত দেখুন এখানে


আপনি কি দয়া করে ব্যাখ্যা করতে পারেন ঠিক কী হচ্ছে "${file#*_}"?
পিটার ভ্যান নিকের্ক

আমি আমার উত্তরে ব্যাখ্যা যুক্ত করেছি।
নলখাগড়া

আইএমও, বেশিরভাগ সমস্ত স্ক্রিপ্টগুলি পছন্দসই কমান্ড আউটপুট প্রতিধ্বনিত করতে লিখতে হবে। তবে এরপরে সরিয়ে ফেলবেন না echo, কেবল স্ক্রিপ্ট আউটপুটটিকে পাইপ করুন bash
জিম এল।

7

আপনি এটির জন্য সরঞ্জামটি ব্যবহার করতে পারেন rename:

rename "s/.*_//" *

আপনি যদি -nএটি যুক্ত করেন তবে এটির কোনও নামকরণ হবে না এবং কেবল কী করা হয়েছে তা আপনাকে দেখায় -n

রাশ এর মন্তব্যের জবাবে: আমার renameহ'ল আসলে prenameদেবিয়ান এবং উবুন্টুর perlপ্যাকেজটি পাঠানো একটি লিঙ্ক ।


5
দ্রষ্টব্য, যে renameসর্বদা বিভিন্ন সিস্টেমে সর্বদা এক হয় না এবং কখনও কখনও এর বাক্য গঠন পৃথক হতে পারে।
নলখাগড়া

1
প্রশ্নকারী এখন যোগ করেছেন যে তিনি সোলারিস ব্যবহার করছেন। সুতরাং এই পুনর্নবীকরণ কমান্ড (যা দেবিয়ান এবং ডেরিভেটিভগুলির সাথে নির্দিষ্ট) তার কাছে উপলভ্য নয়।
গিলস 'অশুভ হওয়া বন্ধ করুন'

1
... যদি না সে উত্স থেকে এটি তৈরি করতে পরিচালিত হয়।
সেন্ডমোরইনফোর

@ গিলস perl-renameডেবিয়ানের ক্ষেত্রে মোটেই সুনির্দিষ্ট নয়। এটা ঠিক বলা হয় না এর renameকিন্তু perl-renameবা prenameঅন্যান্য ডিস্ট্রিবিউশন হবে। এটি সর্বদা রেপোতে থাকা উচিত এবং এর পাশাপাশি একটি পার্ল ইনস্টল করা থাকে।
terdon

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