এক্সটেনশানটি সরিয়ে একাধিক ফাইলের কীভাবে নাম পরিবর্তন করবেন?


14

আমার নামযুক্ত বেশ কয়েকটি টিফ ফাইল রয়েছে:

sw.001.tif
sw.002.tif
...

এবং আমি .tifপ্রতিটি ফাইলের শেষে মুছে ফেলতে চাই । এটি renameকরার জন্য আমি কীভাবে আদেশটি ব্যবহার করতে পারি?


2
মনে রাখবেন যে কোনও লিনাক্স বা ইউনিক্স ফাইল সিস্টেম উইন্ডোজ বা ভিএমএস-স্টাইল "এক্সটেনশানস" ব্যবহার করে - এটি কেবল কনভেনশন দ্বারা ফাইল নামের প্রত্যয় হয় ".টিফ" বা ".সি" বা ".ও" বা ".so " বা যাই হোক না কেন.
ব্রুস এডিগার

ঠিক আছে ... আমি উইন্ডোজ থেকে লিনাক্সে ফাইলগুলি আমদানি করছি :)
পল

1
প্রযুক্তিগতভাবে বলতে গেলে উইন্ডোজ ফাইল এক্সটেনশনগুলি ব্যবহার করে না, এমএস-ডস নামকরণ প্রকল্পটি ভেঙে যাওয়ার পরে উইন্ডোজ 95-র ফাইল ম্যানেজার ফাইলের নামটি শেষ করতে অক্ষর ব্যবহার করে রাখে এবং কনভেনশনটি এখনও থেকে যায়।
রাক

উত্তর:


24

perlএর rename(সাধারণত ডেবিয়ান যেখানে এটি বলা হয় সেখানে পাওয়া যায় prename) বা এই ডেরাইভেটিভ ( renameদেবিয়ান প্যাকেজ):

rename 's/\.tif$//' *.tif

util-linux rename(যেমনটি সাধারণত রেড হ্যাট, rename.ulদেবিয়ান-তে পাওয়া যায় ):

rename -- .tif '' *.tif

(মনে রাখবেন যে এটির নামকরণ blah.tiffany.tifহবে blahfany.tif)


2
আমি বিশ্বাস করি "দেবিয়ান" নামটি ল্যারি ওয়াল দ্বারা এসেছে (পার্লের সাথে আসে?) এবং "রেড হ্যাট" নামটি ইউজার-লিনাক্সের (ডেবিয়ান আইআইআরসি-র নতুন নাম) থেকে ul
এক্সটিএল

@ এক্সটিএল: সত্য। আমি কেবল তাদের কল করেছি কারণ তারা ডেবিয়ান বা রেড হ্যাট ডেরিভেটিভসে পাওয়া "পুনরায় নামকরণ" প্রোগ্রাম।
Ignacio Vazquez-Abram

অনেক ধন্যবাদ! আমি কখনই বুঝতে পারি নি যে 'পুনর্নামকরণ' এর বিভিন্ন সংস্করণ রয়েছে। আমি ধরে নিই যে ডিবিয়ান এবং রেডহ্যাটে কমান্ডের মধ্যে অন্যান্য সূক্ষ্ম পার্থক্য রয়েছে। আমি তাদের কিছু পার্থক্য সন্ধান করতে হবে।
পল

দ্বিতীয় কমান্ডের ফলে অবৈধ বাক্য গঠন হয়েছিল, তবে প্রথমটি কাজ করেছিল।
হ্যালোওয়ার্ল্ড

6

একটি পুনঃনামকরণের জন্য, আপনি এটি করতে পারেন:

$ for i in *.tif; do mv -i $i `basename $i .tif`; done

(-আই ফাইল প্রতিস্থাপনের বিরুদ্ধে সতর্ক করা)


15
নিরাপদ দ্রুত সংস্করণ:for i in ./*.tif; do mv -i "$i" "${i%.tif}"; done
jw013

এখানে সর্বশেষ মন্তব্যে +1। এটি ফাঁকা স্থান সহ ফাইলের নামগুলিতে নিরাপদ।
পেটবেন্স

1
@ jw013 আপনার মন্তব্যটি একটি শীর্ষ-স্তরের উত্তর হওয়া উচিত।
রোল্যান্ড

1
rename -- .oldext .newext *.oldext

এটি নতুনটির সাথে পুরানো এক্সটেনশনকে প্রতিস্থাপন করে। কেবল এক্সটেনশানটি সরাতে আপনি স্পষ্টভাবে একটি যুক্তি হিসাবে খালি স্ট্রিংয়ে পাস করতে পারেন।

rename -- .gz.tmp  '' *.gz.tmp

উপরের কমান্ডের সাথে .gz.tmpবর্তমান ফোল্ডারে এক্সটেনশনযুক্ত সমস্ত ফাইলের নাম পরিবর্তন করা হবে filename.gz

নিবন্ধটি দেখুন: লিনাক্স: বিশদর জন্য একাধিক ফাইলের ফাইল এক্সটেনশনগুলি সরিয়ে ফেলুন


1
এটি ইউজ-লিনাক্স বাস্তবায়ন ধরে নিয়েছে renameযা renameথেকে traditional তিহ্যগত কমান্ডের সাথে সামঞ্জস্যপূর্ণ নয় (এবং এর চেয়ে অনেক বেশি সীমাবদ্ধ) perl
স্টাফেন চেজেলাস

এছাড়াও নোট করুন যে এটি ফাইলের নামের মধ্যে প্রথম উপস্থিতির পরিবর্তে .oldext, প্রসারণের প্রয়োজন foo.oldextasy.oldextহবে না ( পুনরায় নামকরণ করা হবে footasy.oldext)।
স্টাফেন চেজেলাস

1

আপনি যদি আইবিএম এআইআইএক্স ব্যবহার করেন তবে আপনার কোনও renameকমান্ড থাকবে না , সুতরাং ফাইল এক্সটেনশানগুলি ব্যাচ সরাতে আপনাকে প্লেইন ভ্যানিলা সিস্টেম ভি ইউনিক্স কমান্ডগুলি ব্যবহার করতে হবে:

for file in *.tif; do
   mv $file `echo $file | sed 's/.tif$//'`;
done;

-2

আমরা কি এটি পুনরাবৃত্তি করতে পারি?

for i in *.gz; do mv -i $i `basename $i .gz`; done
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.