একটি অক্ষর প্রতিস্থাপন করে একাধিক ফাইলের নাম পরিবর্তন করুন


29

আমার কাছে that : screenshot 13:25.png
উইন্ডোজের মতো নামকরণ করা একাধিক ফাইল রয়েছে এই ফাইলগুলি সম্ভবত ":" এর কারণে খোলার জন্য সংগ্রাম করে।

আমি কীভাবে এটি প্রতিস্থাপন করতে পারি?


2
প্রশ্নটিকে সমাধান হিসাবে চিহ্নিত করার জন্য আপনি কি কোনও উত্তর গ্রহণ করতে পারেন? এটি অন্যান্য ব্যবহারকারীদের ব্যাপকভাবে সহায়তা করবে।
মেরোস

উত্তর:


52

একটি টার্মিনালে, cdডান ডিরেক্টরিতে এবং তারপরে এটি চালান।

rename 's/\:/-/g' *.png -vn

এটি পুনরায় নামকরণের পূর্বরূপ করবে । এটি :দিয়ে প্রতিস্থাপন করা উচিত -

যদি এটি ঠিক মনে হয় তবে প্রান্তটি সরিয়ে ফেলুন nএবং তারপরে এটি আসল নামকরণ করবে।

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


আপনার উত্তরের জন্য ধন্যবাদ। আমি চেষ্টা করেছি এবং আমার এই সমস্যা আছে: প্রতিস্থাপনের ধরণটি (
ইওওয়াল

@ ব্যবহারকারী 236152 দুঃখিত, আমি পালানো ব্যাকস্ল্যাশগুলি (অটোপাইলটে ছিল!) দিয়ে কিছুটা উন্মাদ হয়ে গিয়েছিলাম। একটি দম্পতি সরানো হয়েছে এবং এটি এখনই বৈধ হওয়া উচিত।
অলি

সম্ভবত একটি সাধারণ নটিলাস স্ক্রিপ্ট যা এই জাতীয় অক্ষরগুলির পরিবর্তে অন্যান্য প্ল্যাটফর্মগুলিতে সমস্যা সৃষ্টি করতে পারে (সমস্ত নির্বাচিত ফাইলগুলিতে চলমান) "মাল্টিপ্লাটফর্ম" ব্যক্তির পক্ষে কার্যকর হতে পারে।
সাদি

2
কেন এটি ব্যবহার করবেন? এটি আপনাকে কী করছে তা দেখায় (যদি আপনি কোনও ভুল করেন তবে বিপরীত করা সহজ করে তোলে)। শেষে কেন? কেবলমাত্র আপনি nসহজেই এটি (বা ) মুছে ফেলতে পারেন।
অলি

1
@ নাইটক্রোলার আপনার সম্পূর্ণ পৃথক প্রতিস্থাপন চেইন করতে সক্ষম হওয়া উচিত:rename 's/\:/-/g; s/%28/ /g; s/%29//g' ...
অলি

10

এখানে একটি খাঁটি বাশ সমাধান:

for i in *:*; do
    mv "$i" "${i//:/_}"
done

${var//pattern/replacement}বিন্যাস এর সমস্ত সংঘটন প্রতিস্থাপন করবে patternসঙ্গে replacementপরিবর্তনশীল মধ্যে $var। বাশের স্ট্রিং মাইপুলেশন সক্ষমতা সম্পর্কে আরও তথ্যের জন্য, এখানে দেখুন

আপনি যদি একাধিক অক্ষরের জন্য এটি করতে চান, আপনি কেবল তাদের অক্ষর শ্রেণিতে স্থাপন করতে পারেন। সুতরাং, উদাহরণস্বরূপ, সব প্রতিস্থাপন করতে ;, :, =, +, %, ,আন্ডারস্কোর সঙ্গে, আপনি কাজ করতে পারে:

$ ls 
1foo:bar  2foo:bar:baz  3foo;bar  4foo=bar  5foo%bar  6foo,bar  7foo+bar
$ for i in *; do mv "$i" "${i//[:;=%,+]/_}"; done
$ ls
1foo_bar  2foo_bar_baz  3foo_bar  4foo_bar  5foo_bar  6foo_bar  7foo_bar

মূলত, ধারণাটি এর [ ]অর্থ any of the characters listed। সুতরাং, আপনি অক্ষর শ্রেণিতে প্রতিস্থাপন করতে চান এমন সমস্ত অক্ষর রেখে, সবগুলি একসাথে ডিল করা হয়।


নির্দিষ্ট আপনি যে অক্ষরগুলি চাইলেন জন্য, কিছু একটি বিট আরো জটিল কারণ হয় তাদের মধ্যে কিছু করা প্রয়োজন পলান (আমি উপেক্ষা করছি /* স্নো যেহেতু কোনো ফাইলের নাম এটা অনুমতি দেয় না বেশি উইন্ডোজ না যাতে কোনো হবে না সমস্যা):

$ ls
1foo<bar  2foo>bar  3foo:bar  4foo\bar  5foo|bar  6foo*bar  7foo?bar  8foo"bar  9foo'bar
$ for i in *; do mv "$i" "${i//[<>:\\|*\'\"?]/_}"; done
$ ls
1foo_bar  2foo_bar  3foo_bar  4foo_bar  5foo_bar  6foo_bar  7foo_bar  8foo_bar  9foo_bar

মনে রাখবেন যে, আমি পালিয়ে \, 'এবং "একটি যোগ করে \প্রতিটি সামনে।


এটি কি একাধিক স্বতন্ত্র অক্ষর (যেমন উইন্ডোজ দ্বারা গ্রহণযোগ্য নয় এমন সমস্ত) অন্যের সাথে প্রতিস্থাপন করার জন্য বাড়ানো যেতে পারে?
সাদি

1
@ সাদি আপডেট উত্তর দেখুন।
টেরডন

মূলত এখানে নয়টি রয়েছে: "<>:" / \ | ? * "
সাদি

@ সাদি আপডেট উত্তর দেখুন।
টেরডন

ধন্যবাদ, এটি একটি নটিলাস স্ক্রিপ্ট তৈরি করতে সহায়তা করতে পারে যা নির্বাচিত ফাইলগুলির নামগুলি উইন্ডোজের সাথে সামঞ্জস্য করে।
সাদি

2

আপনি যদি কোনও জিইউআই পছন্দ করেন তবে পাইরেণার ইনস্টল করুন:

sudo apt-get install pyrenamer

তারপরে এটি চালান:

pyrenamer

প্যাটার্নগুলি এবং পুনরায় নামকরণ ফর্ম্যাটগুলির জন্য এটি কয়েক ডজন বিকল্প রয়েছে।


1

আমি জিইউআই পছন্দ করি তবে একটি নটিলাস এক্সটেনশন হিসাবে, অর্থাৎ নটিলাস অ্যাকশনগুলি অতিরিক্ত :

sudo add-apt-repository ppa:nae-team/ppa
sudo apt-get update
sudo apt-get install nautilus-actions-extra
nautilus -q

( Www.webupd8.org/2011/12/nautilus-mitted-extra-pack-of-useful.html দেখুন )

তারপরে আপনি যখন নাম পরিবর্তন করার জন্য ফাইলগুলি নির্বাচন করেন এবং প্রসঙ্গ মেনু থেকে পুনর্নবীকরণ ক্লিক করেন, আপনাকে ফাইলের নামকরণের জন্য অনেকগুলি বিকল্প দেওয়া হয়।


0

renameutilsপ্যাকেজের মাধ্যমে একটি কুশলী নামক প্রোগ্রাম আছে qmvযা ইন্টারেক্টিভ ব্যাচ পুনঃনামকরনের প্রদান করে। আপনি এটি একটি ডিরেক্টরি বা ফাইলগুলির তালিকায় চালান এবং এটি তাদের ফাইলের নামগুলি সহ একটি অস্থায়ী পাঠ্য ফাইল তৈরি করে এবং আপনার প্রিয় সম্পাদকটি শুরু করে। আপনি যখন সম্পাদক থেকে প্রস্থান করবেন, আপনার পরিবর্তিত কোনও ফাইলের নাম অনুসারে পুনরায় নামকরণ করা হবে। qmvএকটি ব্যাচের পুনরায় নামকরণের সমস্যাটিকে পাঠ্য সম্পাদনা সমস্যায় পরিণত করে।

এই ক্ষেত্রে, আপনি qmv -f do *:*কোলনযুক্ত সমস্ত ফাইলের নাম সম্পাদনা করতে এবং তারপরে :%s/:/_/gভিমে কমান্ড ব্যবহার করতে পারেন (বা আপনি যে কোনও সম্পাদক ব্যবহার করেন তার সাথে সম্পর্কিত অনুসন্ধান এবং প্রতিস্থাপন)।

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

এর সাহায্যে qmv, আপনি পরিবর্তে উত্পন্ন ফাইলটি আপনার পছন্দের কমান্ডের মাধ্যমে পাইপ করা চয়ন করতে পারেন, যেমন sed, যদি আপনি ইন্টারেক্টিভ ক্ষমতা না চান।


0

এবং এখানে একটি নটিলাস স্ক্রিপ্ট রয়েছে যা সমস্ত নির্বাচিত ফাইলের নামগুলিতে হাইফেনের সাথে (সমস্ত?) উইন্ডোজ-অসম্পূর্ণ অক্ষরগুলিকে প্রতিস্থাপন করে ( টেরডনের উত্তর অনুসারে ;-)

#!/bin/bash
filesall=""
while [ $# -gt 0 ]
    do
        files=`echo "$1" | sed 's/ /\?/g'`
        filesall="$files $filesall"
        shift
    done
for i in $filesall; do mv "$i" "${i//[<>:\\|*\'\"?]/-}"; done

0

থুনার (এক্সএফসিই ফাইল-ম্যানেজার) বাল্কের নতুন নামকরণের জন্য বৈশিষ্ট্যটিতে একটি দুর্দান্ত বিল্ড রয়েছে has এতে অক্ষর অপসারণ / প্রতিস্থাপন, অনুসন্ধান এবং প্রতিস্থাপন, ফাইল সংখ্যায়ন করা এবং আরও অনেক কিছু রয়েছে।

থুনার ইনস্টল করুন:

sudo apt-get install thunar

থুনারটি খুলুন, আপনার ফাইলগুলিতে ব্রাউজ করুন, সেগুলি নির্বাচন করুন এবং 'পুনর্নামকরণ' নির্বাচন করুন (প্রসঙ্গ মেনু বা মাধ্যমে F2)


0
@echo off
echo.
echo. How many Characters Do You Want To Remove
echo.
echo. From The End Of The FileName ?
echo.
echo.
set /p variable=" > "
setlocal enabledelayedexpansion
for /f "delims=" %%a in (' dir /b /a-d *.mp3') do (
set oldName=%%a
Set newName=!oldName:~0,-%variable%!.mp3
Ren "!oldName!" "!newName!"
)
exit

এটি ভালভাবে কাজ করে এবং একটি ভেরিয়েবল প্রম্পট রয়েছে ... ফাইলটিকে কিছু নাম দিন _
ট্রান্সকেট

3
এটি সঠিক হতে পারে তবে এটি একটি উইন্ডোজ ব্যাচের স্ক্রিপ্টিং ভাষা ব্যবহার করে। আমরা আসুন উবুন্টু, উবুন্টু সম্পর্কিত প্রশ্নগুলির জন্য একটি সাইট এবং তাই উবুন্টু-সম্পর্কিত সরঞ্জামগুলি। আমার মতে এই উত্তরটি এখানে যথাযথভাবে উপযুক্ত নাও হতে পারে।
সের্গেই কলডিয়াজনি

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