কমান্ড লাইন ব্যবহার করে আমি কীভাবে সহজেই একাধিক ফাইলের নাম পরিবর্তন করব?


103

উইন্ডোজে আমি দ্রুত ফাইলগুলির নাম পরিবর্তন করার একটি উপায়

F2 > Rename > Tab (to next file) > Rename ...

তবে উবুন্টু / নটিলিয়াসে, আমি পরবর্তী ফাইলটিতে ট্যাব করতে পারি না। তবে লিনাক্সে থাকাকালীন, আমি মনে করি একটি কমান্ড লাইনের বিকল্প থাকতে হবে।

যাইহোক, কখনও কখনও, আমি নির্দিষ্ট ফাইলগুলির পুনরায় নামকরণ করতে আরও নিয়ন্ত্রণ চাই may সেক্ষেত্রে পরবর্তী ফাইলটিতে ট্যাব সক্ষম হওয়াই ভাল


1
আপনি "আরও নিয়ন্ত্রণ" সংজ্ঞায়িত করতে পারেন? আপনি ঠিক কী জিজ্ঞাসা করছেন তা নিশ্চিত নন ..
ডাং খোয়া

আমি মনে করি এই প্রশ্নের উত্তর দেওয়া হয়নি। আপনি যা জিজ্ঞাসা করছেন (F2 এবং তারপরে F2 মোডে পরবর্তী ফাইলটিতে ঝাঁপ দাও) এটি বর্তমানে উপলভ্য নয় বলে আমি মনে করি নটিলাসে।
don.joey

উত্তর:


187

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

rename "s/SEARCH/REPLACE/g"  *

এটি প্রতিটি ফাইলের SEARCHসাথে স্ট্রিংকে প্রতিস্থাপন করবে REPLACE(এটি হ'ল *)। /gমানে বিশ্বব্যাপী, তাই আপনি যদি একটি ছিল SEARCH_SEARCH.jpg, এটা নতুন নামকরণ করা হবে REPLACE_REPLACE.jpg। যদি আপনার না থাকে তবে /gএটি কেবল একবার প্রতিস্থাপন করত, এবং এখন এটির নামকরণ REPLACE_SEARCH.jpg। আপনি যদি কেস-সংবেদনশীল চান, যোগ করুন /i(এটি হবে, /giবা /igশেষে হবে)।

নিয়মিত প্রকাশের সাথে আপনি আরও অনেক কিছু করতে পারেন।

নোট করুন যে renameএটি prename(ওরফে পার্ল rename) কমান্ড, যা সম্পূর্ণ পার্ল নিয়মিত এক্সপ্রেশন সমর্থন করে। আর একটি রয়েছে renameযা নিদর্শনগুলি ব্যবহার করে, এবং ততটা শক্তিশালী নয়। prenameউবুন্টুতে (পার্ল সহ) ডিফল্টরূপে ইনস্টল করা হত তবে এখন আপনাকে এটি করতে হতে পারে:

sudo apt install rename

এখানে কিছু উদাহরণ আছে:

উপসর্গ

যুক্ত করুন :

rename 's/^/MyPrefix_/' * 
  • document.pdf নামকরণ MyPrefix_document.pdf

সরান :

এছাড়াও আপনি অযাচিত স্ট্রিংগুলি সরাতে পারেন। ধরা যাক আপনার মতো 20 টি এমপি 3 ফাইল রয়েছে CD RIP 01 Song.mp3এবং আপনি "সিডি আরআইপি" অংশটি সরাতে চেয়েছিলেন এবং আপনি একটি কমান্ড দিয়ে সেগুলি সমস্তটি থেকে সরাতে চেয়েছিলেন।

rename 's/^CD RIP //' *
  • CD RIP 01 Song.mp3 প্রতি 01 Song.mp3

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

প্রত্যয়

যুক্ত করুন :

rename 's/$/_MySuffix/' *
  • document.pdf নামকরণ document.pdf_MySuffix

পরিবর্তন :

rename 's/\.pdf$/.doc/' *

Something.pdfমধ্যে পরিবর্তন হবে Something.doc। (ব্যাকস্ল্যাশ হওয়ার কারণটি হ'ল, .রেজিএক্সপিতে একটি ওয়াইল্ডকার্ড চরিত্র তাই .pdfমেলে qPDFযেখানে \.pdfকেবল সঠিক স্ট্রিংয়ের সাথে মেলে .pdfAlso এছাড়াও খুব গুরুত্বপূর্ণ, আপনি যদি বেসের সাথে পরিচিত না হন তবে আপনাকে অবশ্যই সিঙ্গল লেটারে ব্যাকস্ল্যাশ রাখতে হবে! আপনি উদ্ধৃতিগুলি বাদ দিতে পারবেন না বা ডাবল কোট ব্যবহার করুন, বা বাশ তাদের অনুবাদ করার চেষ্টা করবে ash বাশ \. এবং "\." সমান .((তবে ডাবল-কোটস এবং ব্যাকস্ল্যাশগুলি ব্যবহৃত হয়, উদাহরণস্বরূপ একটি নতুন লাইনের জন্য "\ n", তবে যেহেতু "\."একটি বৈধ ব্যাক এস্কেপ ক্রম নয়) অনুবাদ করে .)

প্রকৃতপক্ষে, আপনি স্ট্রিংয়ের অংশগুলি পুরোটির পরিবর্তে উদ্ধৃতিতে সংযুক্ত করতে পারেন: এবং বেসের 's/Search/Replace/g'মতোই । আপনাকে কেবল বিশেষ অক্ষর (এবং স্পেস) সম্পর্কে যত্নবান হতে হবে।s/'Search'/'Replace'/gs/Search/Replace/g


আমি -nবিকল্পটি ব্যবহার করার পরামর্শ দিচ্ছি যখন আপনি ইতিবাচক না হন আপনার সঠিক নিয়মিত ভাব থাকে। এটি দেখায় যা নামকরণ করা হবে, তারপরে এটি না করেই বেরিয়ে আসে। উদাহরণ স্বরূপ:

rename -n s/'One'/'Two'/g *

আপনি -nপতাকাটি সেখানে না রাখলে এটি যা কিছু পরিবর্তন করে তা এটি তালিকাভুক্ত করে । যদি এটি দেখতে ভাল লাগে Upতবে ফিরে যেতে টিপুন , তারপরে মুছে ফেলুন -nএবং টিপুন Enter(বা এটি -vযে সমস্ত পরিবর্তন আউটপুট করে তা প্রতিস্থাপন করুন )।

দ্রষ্টব্য : ১.0.০৪ এর উপরে উবুন্টু সংস্করণগুলি renameডিফল্টরূপে প্রেরণ করে না , তবে এটি এখনও সারণীতে পাওয়া যায়। sudo apt install renameএটি ইনস্টল করতে ব্যবহার করুন


আমার কীভাবে একটি "গতিশীল" প্রত্যয় থাকবে। 001 - 010 ইত্যাদির মতো সম্ভব?
জিউ মেনগ

হুম .. কিছু লেখার চেষ্টা করেছি কিন্তু কাজ হয়নি। বেশিরভাগ কারণে, যখন আমি 1 যোগ করে 001 যোগ করি, এটি 22 যোগ করে, 002 নয় Otherwise এছাড়াও, আমি ঠিক মনে করেছি, renameকমন্ড সম্পর্কে জানার আগে আমি এটিকে যুক্ত করতে পেরেছিলাম:for f in *; do mv -v "$f" "prependThis$f"; done
ম্যাট

2
@ জিউমেং হ্যাঁ (?:\.[0-9]{3})$আপনার প্যাটার্নে ব্যবহার করুন , এটি একটি প্যাসিভ গ্রুপে সমস্ত 3 ডিজিটার ফাইল এক্সটেনশনের সাথে মিলবে। উদাহরণ: rename s/^my_favorite_movie.avi(?:\.[0-9]{3})$/random_movie.avi/ *। এই রেজেক্স চিট শীটটি একবার দেখুন
sergio91pt

@ সার্জিও 91৯pt এটি একটি দুর্দান্ত রেগেক্স চিট শীট। তবে এটা কি সম্পর্কে? অবশ্যই পার্ল হতে হবে - তবে কোনও সেখানে এই জাতীয় নোট খুঁজে পাবে না।
অ্যাডোব

@ অ্যাডোব এটি "পার্ল ভিত্তিক রেজেক্স" এর জন্য সাধারণ। পসিক্স অক্ষর ক্লাস সম্পর্কে + চিহ্ন এবং কলাম সম্পর্কে নোটটি দেখুন।
sergio91pt

21

পাইনারামার চেষ্টা করুন ।

এটি নটিলাসের সাথে সংহত নয়, তবে এটি কাজটি করে gets এখানে একটি পর্যালোচনা।

থুনার (এক্সএফসিইসি অংশ) এর একটি পুনর্নবীকরণকারী রয়েছে যা আপনি পৃথকভাবে চালাতে পারেন।

থুনার বাল্ক নামকরণ


2
থুনার কার্যকারিতা উল্লেখ করার জন্য ধন্যবাদ আপনার যদি থুনার থাকে - ফোল্ডারে ফাইলগুলি নির্বাচন করুন এবং F2 টিপুন।
সর্বোচ্চ

9

মনে হচ্ছে লঞ্চপ্যাডে একটি প্রকল্প রয়েছে যার নাম নটিলাস-পুনর্নামকরণকারীmake installএকবার আপনি স্ক্রিপ্টটি ডাউনলোড করে এটি অনার করে চালিয়ে আপনি এটি ইনস্টল করতে পারেন । এটির কিছু কার্যকারিতা রয়েছে বলে মনে হয় বা আপনি যদি কিছু প্রোগ্রামিং জানেন তবে এটি কেবল একটি অজগর স্ক্রিপ্ট হওয়ায় আপনি এটি কেবল আপনার প্রয়োজনের তুলনায় বাড়িয়ে তুলতে পারেন।

এখানে চিত্র বর্ণনা লিখুন


8

কমান্ড লাইনে, একটি ফাইলের নতুন নামকরণ করা কমান্ডটি সহজ

mv file1.txt file2.txt

আপনি যদি এটি ব্যাচে করতে চান তবে আপনি সম্ভবত এটি কোনও স্ক্রিপ্টের মাধ্যমে করতে চাইবেন। আপনি যদি আরও বিশদ সরবরাহ করেন তবে আমি বা অন্য কেউ সম্ভবত আপনার জন্য চাবুক মারতে পারেন। এটি বলেছিল যে কোনও ফাইলে স্টাফ সংযুক্ত করার জন্য একটি স্ক্রিপ্ট এটির মতো দেখতে পারে:

#!/bin/bash
for file in *
do
    # separate the file name from its extension
    if [[ $file == *.* ]]; then
      ext="${file##*.}"
      fname="${file%.*}"
      mv "$file" "${fname}_APPENDSTUFFHERE.$ext"
    else
      mv "$file" "${file}_APPENDSTUFFHERE"
    fi
done

আপনার পুনঃনামকরণ করা জিনিসগুলির ঠিক কীভাবে প্রয়োজন তার উপর নির্ভর করে সম্ভবত টুইট করা হবে, উদাহরণস্বরূপ যদি আপনার নির্দিষ্ট নামকরণের নিয়ম অনুসরণ করা হয়। (ব্যক্তিগতভাবে আমি পার্ল স্ক্রিপ্টের মাধ্যমে এটি করতাম যেহেতু আমার বাশ-ফু এত দুর্দান্ত নয়, তবে এটি কেবল আমার জন্য))

নোট করুন যে আমি পূর্বে জিজ্ঞাসিত প্রশ্ন থেকে ফাইলের নাম এবং এক্সটেনশনের বিচ্ছেদ পেয়েছি ।


7

আপনি যদি কমান্ড লাইন ছাড়াই এটি করতে চান তবে উইন্ডোতে আপনি যা করছেন ঠিক তেমনই ট্যাব কী-এর পরিবর্তে ডান তীর কী ব্যবহার করুন । এটি উইন্ডোতে ট্যাবের মতো পরবর্তী ফাইলটি নির্বাচন করবে।


এটি একই নয়: আপনার পুনরায় নামকরণ শেষ করতে ENTER, পরবর্তী ফাইলটিতে যাওয়ার জন্য তীর কী এবং এটির পুনরায় নামকরণের জন্য F2 দরকার হবে। আপনি একবার কোনও ফাইলের নাম পরিবর্তন করার পরে তা ট্যাব 1 টি পদক্ষেপে এটি করে।
MestreLion

@ মিস্ট্রেলিওন তবে এটি প্রশ্নের মধ্যে বর্ণিত অ্যালগরিদমের সাথে অনেকটা অনুরূপ এবং অতিরিক্ত কোনও সফ্টওয়্যার বা কমান্ড-লাইন অপারেশনগুলির প্রয়োজন নেই। ব্যবহারকারী বান্ধব হওয়া বাছাই করুন।
রাফা সিলেক

সত্য, আপনি একমাত্র উত্তর যা অন্তত মূল প্রশ্নের মতো একই পদ্ধতির চেষ্টা করেছিলেন। এবং দুঃখজনক সত্যটি হ'ল নটিলাসের তেমন কোনও কার্যকারিতা নেই। আপনি নাম পরিবর্তন করতে F2 করতে পারেন, তবে এটি চালিয়ে যায়। ইতিমধ্যে পুনরায় নামকরণের মোডে আপনাকে স্বয়ংক্রিয়ভাবে পরবর্তী ফাইলটিতে ঝাঁপানোর জন্য কোনও ট্যাব নেই।
MestreLion

7

সত্যিই একই প্রশ্ন নয় কীভাবে একবারে অনেকগুলি ফাইলের নাম পরিবর্তন করা যায়? তবে আমি সেই একই প্রোগ্রামটির পরামর্শ দিতে যাচ্ছি যা আমি উত্তরে পরামর্শ দিয়েছিলাম: কিউএমভি

পুনরায় নামকরণ প্যাকেজ থেকে qmv হ্যান্ডি সরঞ্জাম। এটি আপনাকে ফাইলের নাম পরিবর্তন করতে আপনার প্রিয় পাঠ্য সম্পাদক ব্যবহার করতে সক্ষম করে। ভিমের শক্তির সাথে একত্রিত হয়ে আপনার একটি নাম পরিবর্তন করার উপযোগিতা রয়েছে।

আমি সাধারণত ডীরের মতোই এখানে প্রার্থনা করি qmv -f doযেখানে আমি একগুচ্ছ ফাইলের নাম পরিবর্তন করতে চাই। বা আমি যদি পুনরাবৃত্তভাবে নামকরণ করতে চাই qmv -R -f do

যখনই আমার একাধিক ফাইলের নামকরণের প্রয়োজন হবে, আমি সর্বদা qmv (এবং ভিআইএম) এর পিছনে পড়ে যাই।

http://www.nongnu.org/renameutils/


আমি আপনার পরামর্শের ভিত্তিতে এটি চেষ্টা করেছি। আপনি যদি ভিএম ব্যবহার করেন তবে এটি সত্যিই সবচেয়ে দুর্দান্ত সরঞ্জাম!
ste_kwr

3

যদি একমাত্র উপযুক্ত বিকল্প ফাইলগুলিকে ম্যানুয়ালি নামকরণ করে তবে এটি করার একটি দুর্দান্ত উপায় হ'ল vidir( moreutilsপ্যাকেজটিতে):

sudo add-apt-repository universe && sudo apt-get update && sudo apt-get install moreutils
DESCRIPTION
       vidir allows editing of the contents of a directory in a text editor.
       If no directory is specified, the current directory is edited.

       When editing a directory, each item in the directory will appear on
       its own numbered line. These numbers are how vidir keeps track of what
       items are changed. Delete lines to remove files from the directory, or
       edit filenames to rename files. You can also switch pairs of numbers
       to swap filenames.

       Note that if "-" is specified as the directory to edit, it reads a
       list of filenames from stdin and displays those for editing.
       Alternatively, a list of files can be specified on the command line.

উদাহরণ


নির্বাচন করে ফাইলের নামকরণ aming

বর্তমান ওয়ার্কিং ডিরেক্টরি এর সামগ্রী:

.
├── bar
├── baz
└── foo

vidirআপনি যে নামটি পরিবর্তন করতে চান সেগুলি লাইনে ফাইল নামগুলি চালান , নাম পরিবর্তন করুন; হিট CTRL+ Oএবং CTRL+ X:

screenshot3

.
├── bar.bak
├── baz.old
└── foo.new

নির্বাচন করে ফাইলের নাম পরিবর্তন করা

বর্তমান ওয়ার্কিং ডিরেক্টরি এর সামগ্রী:

.
├── bar
├── baz
└── foo

বর্তমান কার্যকারী ডিরেক্টরিগুলির ফাইলগুলির সামগ্রী:

$ for f in *; do printf '- %s:\n\n' "$f"; cat "$f"; echo; done
- bar:

This is bar

- baz:

This is baz

- foo:

This is foo

$ 

চালান vidir, আপনি যে ফাইলের নামটি স্যুইচ করতে চান তাতে লাইনগুলিতে স্যুইচ করুন; হিট CTRL+ Oএবং CTRL+ X:

screenshot4

.
├── bar
├── baz
└── foo
$ for f in *; do printf '- %s:\n\n' "$f"; cat "$f"; echo; done
- bar:

This is foo

- baz:

This is bar

- foo:

This is baz

$ 

নির্বাচন করে ফাইল সরানো হচ্ছে

বর্তমান ওয়ার্কিং ডিরেক্টরি এর সামগ্রী:

.
├── bar
├── baz
└── foo

vidirআপনি যে ফাইলগুলি মুছতে চান তা চালান , সরান; হিট CTRL+ Oএবং CTRL+ X:

screenshot2

.
└── baz

2

আমি krename ব্যবহার করছি। এটি একটি জিইউআই অ্যাপ্লিকেশন। এটি এমপি 3 ট্যাগ এবং আরও পড়তে পারে।

এটি ক্রাসাদারের একটি অংশের পাশাপাশি একটি পৃথক অ্যাপ্লিকেশন হিসাবে বিদ্যমান।

এখানে একটি renameস্ক্রিপ্টও রয়েছে - এটি স্ট্যান্ডার্ড পার্ল ইনস্টলেশনের একটি অংশ (আপনি সম্ভবত এটি ইনস্টল করেছেন)। এটি দিয়ে পরীক্ষা করে দেখুন man rename

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