ডিরেক্টরিতে ফাইলগুলির নাম পরিবর্তন করুন


10

কোনও ডিরেক্টরিতে যেমন ফাইলগুলির নাম পরিবর্তন করতে হয় যেমন নীচের ফাইল PMC21375.pdf.txt:, আমার নামকরণ করা দরকার 21375.txt। অর্থাত, আমি উভয় সরানোর প্রয়োজন PMCএবং pdfপ্রতিটি ফাইল নাম থেকে।

উত্তর:


9

সঙ্গে এর rename:

rename 's/(PMC|\.pdf)//g' *pdf.txt 

ডেমো:

$ ls *txt
PMC21375.pdf.txt
$ rename -n 's/(PMC|\.pdf)//g' *txt 
PMC21375.pdf.txt -> 21375.txt

shellপ্রম্পট থেকে । এটি খুব দরকারী, আপনি কিছু কোড রাখতে পারেন যেমন আমি প্রতিস্থাপনে করি। যখন আপনার পরীক্ষাগুলি ভালিড হয়ে যায়

আপনি -n(ড্রাই ড্রাই-মোড সুইচ) সরিয়ে ফেলতে পারেন ।

সাবধানবাণী একই নামের অন্যান্য সরঞ্জাম রয়েছে যা এটি করতে সক্ষম হতে পারে বা নাও পারে, তাই সাবধান হন।

আপনি যদি নিম্নলিখিত কমান্ডটি চালনা করেন ( linux)

$ file $(readlink -f $(type -p rename))

এবং আপনার মত একটি ফলাফল আছে

.../rename: Perl script, ASCII text executable

তাহলে এটিকে সঠিক সরঞ্জাম বলে মনে হচ্ছে =)

যদি তা না হয় তবে এটিকে ডিফল্ট (সাধারণত ইতিমধ্যে কেস) তৈরি করতে Debianএবং ডেরাইভেটিভের মতো Ubuntu:

$ sudo update-alternatives --set rename /path/to/rename

( /path/to/renameআপনার perl's renameআদেশের পথে প্রতিস্থাপন করুন ।


সর্বশেষে তবে অন্ততঃ এই সরঞ্জামটি মূলত পার্লের বাবা ল্যারি ওয়াল লিখেছিলেন।


এটি .pdfফাইলের নাম থেকে মুছে ফেলবে না ।
উইলিয়াম এভারেট

সেই অনুসারে সম্পাদিত পোস্ট।
গিলস কুইনট

5

পুনর্নামকরণ কমান্ড ছাড়াও আপনি এটি সরাসরি ব্যাশে করতে পারেন (অনেকের মধ্যে কেবল একটি উপায়):

 for file in *pdf.txt; do mv $file ${file//[A-Z.]}.txt ; done

পিনিয়াকা কীভাবে এটি কাজ করে তা দেখানোর জন্য সম্পাদিত:

hmontoliu@ulises2:/tmp/foo$ touch PCM21375.pdf.txt PCM21376.pdf.txt
hmontoliu@ulises2:/tmp/foo$ ls
   PCM21375.pdf.txt  PCM21376.pdf.txt
hmontoliu@ulises2:/tmp/foo$ for file in *pdf.txt; do mv $file ${file//[A-Z.]}.txt ; done
hmontoliu@ulises2:/tmp/foo$ ls
   21375.txt  21376.txt

এটি .pdfফাইলের নাম থেকে সরবে না।
উইলিয়াম এভারেট

আপনি কি এটা চেষ্টা করেছেন? কারণ এটা আমার জন্য সম্পাদনায় দেখানো হয়েছে।
hmontoliu

আমার খারাপ। আমি ভেবেছিলাম এটি কেবল বড় অক্ষরে রূপান্তরিত করবে। সম্মত।
উইলিয়াম এভারেট

4

ফাইলগুলির নামকরণের জন্য বেশ কয়েকটি ইউটিলিটি রয়েছে তবে ব্যবহার করার সবচেয়ে সহজ একটি rename। আপনার ক্ষেত্রে, আপনি সম্ভবত এটি করতে পারেন:

rename PMC '' *txt
rename .pdf '' *txt

প্রথম পরামিতিটি প্রতিস্থাপনের জন্য ফাইল নামের অংশ is দ্বিতীয় প্যারামিটার হ'ল প্রতিস্থাপনের স্ট্রিং। এখানে আমি ''খালি স্ট্রিং প্রতিনিধিত্ব করতে ব্যবহার করছি । নিম্নলিখিত সমস্ত পরামিতিগুলি নামকরণের জন্য ফাইল, এখানে আমি *txtপাঠ্য ফাইলগুলিতে প্রতিস্থাপন সীমাবদ্ধ করতে ব্যবহার করেছি ।

renameআপনি যদি লিনাক্স চালাচ্ছেন তবে ইতিমধ্যে উপস্থিত থাকা উচিত। আপনি যদি একটি * BSD বা OS X চালাচ্ছেন তবে আপনাকে প্রথমে এটি ইনস্টল করতে হতে পারে।


আমি জিএনইউ আছে এমন কিছু নেই rename। এর মধ্যে একটি রয়েছে util-linuxএবং perlবিভিন্ন সিনট্যাক্স সহ একটি রয়েছে। এক আপনার কাছ থেকে মতো উল্লেখ করা করছি util-linuxযে কখনও কখনও বলা হয় rename.ulযাতে নিবন্ধের সাথে বিভ্রান্ত হবেন না renameথেকে perl, যখন কিছু অন্যান্য সিস্টেমের উপর, renameutil-লিনাক্স থেকে এক থেকে এক perlবলা হয় prename
স্টাফেন চেজেলাস

1
মাইন ইউজার-লিনাক্স থেকে এক। আমি ভুল করে ভেবেছিলাম এটি জিএনইউ কোর্টিলের অংশ।
উইজেডসবারমারিনার

নতুন নামকরণের ডিবিয়ান সংস্করণটি এরকমই হবে rename 's/PMC// *.txtএবংrename s/\.pdf// *.txt
উইলিয়াম এভারেট

1

প্রথমে আপনার ফাইলগুলির ব্যাকআপ করুন! তারপরে আপনি সাধারণ ফর্মের সাথে বর্তমান ডিরেক্টরিতে পাইথন ওয়ান-লাইনার ব্যবহার করতে পারেন:

python -c "import glob,os; [os.rename(fn, fn.replace('PATTERN', 'REPLACE')) for fn in glob.glob('PATH/*')]"

আপনার নির্দিষ্ট ক্ষেত্রে, আপনি এটি দুটিবার ব্যবহার করতে পারেন:

python -c "import glob,os; [os.rename(fn, fn.replace('.pdf', '')) for fn in glob.glob('*')]"

অপসারণ .pdfএবং আবার:

python -c "import glob,os; [os.rename(fn, fn.replace('PMC', '')) for fn in glob.glob('*')]"

অপসারণ করতে PMC


0

এটা চেষ্টা কর:

for i in *.pdf.txt; do j=${i//\.pdf/}; j=${j//PMC/}; mv $i $j; done

j=${i//\.pdf/}মানে খেলোয়াড়রা .pdfমধ্যে $iকিছুই। একইভাবে দ্বিতীয় জে অ্যাসাইনমেন্টটি পিএমসি থেকে মুক্তি পেয়ে।


0

আপনি যদি ব্যবহার করেন তবে zshএটি সাধারণ কাজ zmv:

zmv 'PMC(*).pdf.txt' '$1.txt'

( zmvসম্ভাব্য দ্বন্দ্বগুলি কৃপণভাবে পরিচালনা করে)।

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