ডিরেক্টরিতে সমস্ত ফাইলের নাম $ filename_h থেকে $ filename_half?


139

মরা সহজ।

আমি কীভাবে নাম পরিবর্তন করব

05_h.png
06_h.png

প্রতি

05_half.png
06_half.png

কমপক্ষে, আমি মনে করি এটি সহজ, তবে আপনি ইতিমধ্যে না জানলে এই ধরণের জিনিসটির জন্য গুগলের পক্ষে পক্ষে শক্ত।

ধন্যবাদ ....

উত্তর:


301

কেবল বাশ ব্যবহার করুন, বাহ্যিক আদেশগুলি কল করার দরকার নেই।

for file in *_h.png
do
  mv "$file" "${file/_h.png/_half.png}"
done

যোগ করবেন না #!/bin/sh

তাদের জন্য যে ওয়ান-লাইনার প্রয়োজন:

for file in *.png; do mv "$file" "${file/_h.png/_half.png}"; done


3
ফাইল / _h.png / _half.png রেজেেক্স?
ব্যবহারকারী 2799603

15
না, ফর্ম্যাটটি হ'ল: {{স্ট্রিং / স্ট্রিং / সাবস্টিটিউশন} - "বিকল্প। প্রথম ঘটনা"। আরও তথ্যের জন্য এই চিট শীটটি পরীক্ষা করুন (বিভাগ "স্ট্রিংস"): bruxy.regnet.cz/linux/bash_cheatsheet/bash_cheatsheet.pdf
উইন্ডারাইডার

11
এর কোন কারণ Do not add #!/bin/sh? আমি এই বিবৃতিটি দিয়ে / ছাড়া উভয়েই কাজ করার চেষ্টা করেছি।
রায়ান 14

6
@ রায়ান @ ইশান জৈন বাস্তবে এটি ব্যাকএন্ড শেলটি নির্দেশ করে যা অবশ্যই স্ক্রিপ্টটি সম্পাদন করে। sh এবং বাশ আলাদা আলাদা শাঁস তাই এটি স্ক্রিপ্টের আচরণ এবং সিনট্যাক্সকে প্রভাবিত করতে পারে। যেহেতু স্ক্রিপ্টটি ব্যাশ অন্তর্নির্মিত স্ট্রিং প্রতিস্থাপন ব্যবহার করে আপনার হ্যাডার যুক্ত করা উচিত #!/bin/bash। এই কথা বলে, ব্যাশ স্বাভাবিকভাবে অনেকগুলি কম্পিউটার এ ডিফল্ট শেল যাতে আপনি অনেক পার্থক্য খুঁজে পাবে না হয়: ডি আপনি আরো তথ্য পেতে পারেন এখানে
ক্রিস্টিয়ান রামন-সভা

65

renameকমান্ড চেষ্টা করুন :

rename 's/_h.png/_half.png/' *.png

হালনাগাদ:

উদাহরণস্বরূপ ব্যবহার:

কিছু সামগ্রী তৈরি করুন

$ mkdir /tmp/foo
$ cd /tmp/foo
$ touch one_h.png two_h.png three_h.png
$ ls 
one_h.png  three_h.png  two_h.png

পরীক্ষার সমাধান:

$ rename 's/_h.png/_half.png/' *.png
$ ls
one_half.png  three_half.png  two_half.png

1
@ কারোলাইন অ্যালেক্সিউ: আমি উদাহরণ পরীক্ষার অধিবেশন যুক্ত করেছি। এটি চেষ্টা করুন। আপনার সম্ভবত কিছু টাইপ আছে। এর আউটপুট কি ls? তুমি কি rename ...চেষ্টা করছ?
মিশা łরাজের

2
ম্যাকের উপর ব্যাশে কাজ করে না, renameমানক ইউনিক্স সরঞ্জাম নয়।
tandrewnichols

1
@tandrewnichols, চেষ্টা homebrew - একবার ইনস্টল করুন, পুনঃনামকরণ প্রাপ্তিসাধ্য সেকেন্ডের মধ্যে দিয়ে হয়েbrew install rename
Simbamangu

4
আমার হিসাবে নামটির সাথে কাজ হয়নি 's//'- আমি পুরুষকে rename [options] expression replacement file...rename from util-linux 2.23.2
রেফার

2
.আক্ষরিক বিন্দুর জন্য, কেবল কোনও বিন্দু নয় - যে কোনও অক্ষরের সাথে মেলে মনে রাখবেন , এর \.পরিবর্তে ব্যবহার করুন
মিজনার

11
for f in *.png; do
  fnew=`echo $f | sed 's/_h.png/_half.png/'`
  mv $f $fnew
done

1
এটি আগে থেকে শুকনো রান করার জন্য দুর্দান্ত। আমি প্রথম প্রতিস্থাপিত mv $f $fnewসঙ্গে echo $fnewনিশ্চিত করতে যেমন দ্বিতীয় লাইন আউটপুট সৌন্দর্য বিবেকী।
লোবাতি

10

আপনি কি খাঁটি বাশ সমাধান খুঁজছেন? অনেক পন্থা আছে, কিন্তু এখানে একটি।

for file in *_h.png ; do mv "$file" "${file%%_h.png}_half.png" ; done

এটি অনুমান করে যে বর্তমান ডিরেক্টরিতে কেবলমাত্র সেই ফাইলগুলিই _h.pngপুনরায় নামকরণ করতে চায়।

আরও অনেক বিশেষভাবে

for file in 0{5..6}_h.png ; do mv "$file" "${file/_h./_half.}" ; done

এই দুটি উদাহরণ অনুমান করা আপনার একমাত্র। নথি পত্র.

সাধারণ ক্ষেত্রে জন্য ফাইলে পুনঃনামকরনের করেছে জুলুম আবৃত সামনে


6

renameপার্ল লিখিত ইউটিলিটি ব্যবহার করুন । হতে পারে এটি ডিফল্ট হিসাবে উপলভ্য নয় যদিও ...

$ touch 0{5..6}_h.png

$ ls
05_h.png  06_h.png

$ rename 's/h/half/' *.png

$ ls
05_half.png  06_half.png


4

আমার একটি অনুরূপ প্রশ্ন ছিল: ম্যানুয়ালটিতে এটি নামটির বর্ণনা দেয়

rename [option] expression replacement file

যাতে আপনি এটি এইভাবে ব্যবহার করতে পারেন

rename _h _half *.png

কোডটিতে: '_h' হ'ল অভিব্যক্তিটি আপনি সন্ধান করছেন। '_হাল্ফ' হল সেই প্যাটার্নটি যা আপনি প্রতিস্থাপন করতে চান। '* .png' হ'ল ফাইলগুলির পরিসীমা যা আপনি আপনার সম্ভাব্য টার্গেট ফাইলগুলি সন্ধান করছেন।

আশা করি এটি গ:


1

আর একটি পদ্ধতির ব্যাচ পুনরায় নামকরণ বিকল্পটি ম্যানুয়ালি করা যেতে পারে

-> ফাইল কাস্টম কমান্ডগুলি -> ব্যাচের পুনর্নামকরণ ফাইলটিতে ডান ক্লিক করুন এবং আপনি এইচ প্রতিস্থাপন করতে পারেন। অর্ধেক সহ

এটি WinSCP ইত্যাদি ব্যবহার করে লিনাক্স ভিত্তিক গুইয়ের জন্য কাজ করবে


0

renameইউটিলিটি ব্যবহার করুন :

rc@bvm3:/tmp/foo $ touch 05_h.png 06_h.png
rc@bvm3:/tmp/foo $ rename 's/_h/_half/' * 
rc@bvm3:/tmp/foo $ ls -l
total 0
-rw-r--r-- 1 rc rc 0 2011-09-17 00:15 05_half.png
-rw-r--r-- 1 rc rc 0 2011-09-17 00:15 06_half.png


0

যদিও উত্তর সেটটি সম্পূর্ণ, আমাকে আরও একটি অনুপস্থিত যুক্ত করতে হবে।

for i in *_h.png;
  do name=`echo "$i" | cut -d'_' -f1`
  echo "Executing of name $name" 
  mv "$i" "${name}_half.png"
done
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.