ছোট ব্যাচে ব্যাচের পুনরায় নামকরণ করা ফাইল case


17

কোনও ডিরেক্টরিতে ছোট ফাইল | বড় হাতের অক্ষরে সমস্ত ফাইলের নাম পরিবর্তন করার কোনও উপায় আছে কি ?

আমি অননিলার কমান্ড সন্ধান করছি।

আমি টোটালকম্ডারের পছন্দ করতাম alt+f7, এখন টার্মিনালে আমার সেই কার্যকারিতাটি দরকার

উত্তর:


20

a_fileবর্তমান ডিরেক্টরিতে প্রতিটি ফাইলের a_fileজন্য ছোট আকারে পুনর্নবীকরণ করুন ।

for a_file in *;do mv -v "$a_file" `echo "$a_file" | tr [:upper:] [:lower:]` ;done;

বড় হাতের ক্ষেত্রে আর্গুমেন্টগুলিকে বিপরীত করুন [:lower:] [:upper:]

trকমান্ড রেফারেন্স লিঙ্ক

হালনাগাদ

এমনকি আরও নিয়ন্ত্রণ *সঙ্গে প্রতিস্থাপন করা যেতে পারে ls

উদাহরণস্বরূপ, শুধুমাত্র * .jpg ফাইলগুলিকে ফিল্টার করার জন্য 1.txt, 2.txt, 3.txt, 1.jpg, 2.jpg এবং 3.jpg সমন্বিত ডিরেক্টরিতে lsব্যবহৃত হতে পারে:

for a_file in $(ls *.jpg);do mv -v $a_file `echo $a_file | tr [:upper:] [:lower:]` ;done;

উপরের কোডটি a_file.jpg এক্সটেনশন সহ সমস্ত ফাইলকে পরিবর্তনশীল হিসাবে বরাদ্দ করবে ।

প্রস্তাবিত এসডিএস অনুসারে কমান্ডের -vজন্য যুক্ত বিকল্প আপডেট করুনmv


4
আপনি "-v" এ পাস করতে চাইতে পারেন mvযাতে আপনি দেখতে পাচ্ছেন যে কী হচ্ছে; আপনি সম্ভবত "-f" পাস করতে চান না কারণ এটি বিদ্যমান ফাইলগুলিকে
আঁটকে

এটি তাদের নামে স্পেস সহ ফাইলগুলির জন্য কাজ করে না।
তিয়ানসিয়াং জিয়ানগ

আপনি ফাইলের নামের চারপাশে উদ্ধৃতি ব্যবহার করতে পারেন।
স্টিফ কে

2
দুঃখিত, তবে ls * jpg এর অংশটি একটি খারাপ ধারণা। mywiki.wooledge.org/ParsingLs আপনি * jpg এর সাথে একই ফলাফলটি অর্জন করতে পারেন যেখানে আপনার প্রথম স্থান ছিল *।
Tink

16

এখানে আরও একটি মার্জিত এবং সাধারণ ইউটিলিটি রয়েছে prename

ল্যারি ওয়াল দ্বারা রচিত, এটি এলো perlএটি সম্ভবত আপনার সিস্টেমে ইতিমধ্যে উপলভ্য হিসাবে উপস্থিত রয়েছে /usr/bin/prename(যদি আপনার কাছে সেটআপ বিকল্প থাকে তবে /usr/bin/rename/ ইত্যাদি / বিকল্পের মাধ্যমে সিমলিংক হিসাবে উপলব্ধ prename)

এটি ব্যবহার করে আপনি কোনও পার্ল এক্সপ্রেশন প্রদানের মাধ্যমে এক কমান্ডে একাধিক ফাইলের নাম পরিবর্তন করতে পারেন (সহ প্রতিস্থাপন s///বা চর ট্রান্সপ্লিটেশন অন্তর্ভুক্ত তবে সীমাবদ্ধ নয় tr///):

উদাহরণ:

# Lowercase all *.JPG filenames:
prename tr/A-Z/a-z/ *.JPG

# Change any 'No' in a filename to a 'Yes':
prename s/No/Yes/g *No*

# increment first sequence of digits in a filename by 3:
prename 's/([0-9]+)/$1+3/e' *[0-9]*

# If a file contains 'aaa', append '.bak' to its name
prename 'if (/aaa/) {$_ .= ".bak"}'  *

ইত্যাদি।

পূর্ব নাম সম্পর্কে আর একটি দুর্দান্ত জিনিস হ'ল কোনও ফাইলের কোনও বিদ্যমান ফাইলের নাম পরিবর্তন করার ক্ষেত্রে এটি আপনাকে রক্ষা করে।

man prename বিস্তারিত জানার জন্য.


1

ব্যবহার find

find . -name * -type f -exec rename 'y/A-Z/a-z/' '{}' \;

জন্য find

  • অবশ্যই -nameআপনার প্যাটার্ন পরে ।
  • -maxdepth 0: কেবল বর্তমান ডিরেক্টরি

জন্য rename

  • -n, -nono: কোনও পদক্ষেপ নেই: নতুন নামকরণের জন্য ফাইলগুলির নাম মুদ্রণ করুন, তবে নাম পরিবর্তন করবেন না।
  • y/source/dest/: প্যাটার্ন স্পেসে অক্ষরগুলি লিখিতভাবে লিখিত করুন যা ভাগ্যের সাথে সংশ্লিষ্ট চরিত্রের উত্সে উপস্থিত হয়।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.