আমি কিভাবে সমস্ত ফাইলের ছোট হাতের নাম পরিবর্তন করব?


120

আমার উদাহরণস্বরূপ TREE.wav, ONE.WAV রয়েছে। আমি গাছটির নাম পরিবর্তন করতে চাই। Wav, one.wav। আমি কিভাবে সমস্ত ফাইলের ছোট হাতের নাম পরিবর্তন করব?


1
আপনি কি টার্মিনাল / শেল সলিউশন দিয়ে আরামদায়ক? অথবা আপনি সি / অবজেক্টিভ-সি কোডটি সম্পাদন করতে চান?

টার্মিনাল সমাধান ঠিক আছে।
ভোলোদা 2

3
আমি মনে করি এটি আবার খোলা উচিত। টার্মিনাল
কোডটিও

1
এটি স্ট্যাকওভারফ্লোতে একটি বৈধ প্রশ্ন হওয়া উচিত। এটিও কোড।
আদেভ

উত্তর:


366

আপনি যদি টার্মিনালের সাথে স্বাচ্ছন্দ্য বোধ করেন:

  1. টার্মিনাল.এপ খুলুন, টাইপ করুন cdএবং তারপরে উইন্ডোতে নামকরণের জন্য ফাইলযুক্ত ফোল্ডারটিকে টেনে আনুন drop
  2. আপনি সঠিক ডিরেক্টরিতে আছেন তা নিশ্চিত করতে, টাইপ করুন lsএবং এন্টার টিপুন।
  3. এই কোডটি আটকান এবং এন্টার টিপুন:

    for f in *; do mv "$f" "$f.tmp"; mv "$f.tmp" "`echo $f | tr "[:upper:]" "[:lower:]"`"; done
  4. আপনার সমস্ত ফাইল নিম্নতর হয়েছে তা নিশ্চিত করতে, টাইপ করুন lsএবং আবার এন্টার চাপুন।

(কয়েকটি সমাধানের জন্য টুইটারে @ বাভরিয়াসকে ধন্যবাদ, এবং কেস-সংবেদনশীল ফাইল সিস্টেমগুলিতে এই নিরাপদ করার জন্য নীচে জন হুইটলিকে ধন্যবাদ))


9
সতর্ক হোন. যদি আপনার কাছে ফাইলগুলির নাম foo.txtএবং থাকে FOO.TXTতবে এটি তাদের মধ্যে একটিকে ক্লোবার করতে পারে।
কিথ থমসন 21

1
বাশ সহ, আপনি কেবল এটি করতে পারেন mv "$f" "${f,,}"declare -l g=$f; mv "$f" "$g"
:,

2
আমি এই সমস্ত কমান্ড চেষ্টা করেছিলাম, আমি "এমভি: 'পিপিপি.টেক্সট' এবং 'পিপিপি.টিএক্সটি' একই ফাইল" এবং এটি আমার ফাইলকে ছোট করে না ... কোনও ধারণা? এটি একই ডিরেক্টরিতে এটি কারণ?
নিরলস

1
ব্যবহারকারী2066039: এটি অবশ্যই ম্যাকের উপর একটি সাম্প্রতিক বিষয় হতে হবে, কারণ এক বছরেরও বেশি বয়স্ক উত্তরগুলি এর জন্য অ্যাকাউন্ট করে না। আমি 'jpg1' এর মতো একটি মধ্যবর্তী এক্সটেনশান ব্যবহার করে কাজটি সম্পন্ন করেছি। সুতরাং, জেপিজি -> jpg1 -> জেপিজি। আশা করি এইটি কাজ করবে.
জয়েস

14
ওএস এক্স ব্যবহারকারীদের কেস-সংবেদনশীল ফাইল সিস্টেমের কারণে প্রথমে প্রতিটি ফাইলের একটি অস্থায়ী নামে নতুন নামকরণ করা উচিত, যেমন: for f in *; do mv "$f" "$f.tmp"; mv "$f.tmp" "`echo $f | tr "[:upper:]" "[:lower:]"`"; done
জন হুইটলি

10

যেমনটি জিজ্ঞাসা করা প্রশ্নটি সাধারণ, এবং এটিও গুরুত্বপূর্ণ, তাই আমি আরও সাধারণ উত্তর সরবরাহ করতে চাই:

সর্বাধিক সহজ কেস (বেশিরভাগ সময় নিরাপদ এবং ম্যাক ওএস এক্সে, তবে পড়ুন):

for i in * ; do j=$(tr '[:upper:]' '[:lower:]' <<< "$i") ; mv "$i" "$j" ; done

আপনাকে ফাইলের নামগুলিতে (যে কোনও ওএস) ফাঁকা স্থানও পরিচালনা করতে হবে:

IFS=$'\n' ; for i in * ; do j=$(tr '[:upper:]' '[:lower:]' <<< "$i") ; mv "$i" "$j" ; done

আপনার কেস-সংবেদনশীল ফাইল সিস্টেমের ক্ষেত্রে পৃথকভাবে ফাইলের নামগুলি নিরাপদে পরিচালনা করতে হবে এবং লক্ষ্য (যেমন লিনাক্স) ওভাররাইট না করে:

for i in * ; do j=$(tr '[:upper:]' '[:lower:]' <<< "$i") ; [ -e "$j" ] && continue ; mv "$i" "$j" ; done 

ম্যাক ওএস এক্স সম্পর্কে দ্রষ্টব্য:

ম্যাকের ফাইল সিস্টেমটি কেস-সংবেদনশীল, কেস-সংরক্ষণ করা।

তবে গ্রহণযোগ্য উত্তর এবং মন্তব্যে প্রস্তাবিত অস্থায়ী ফাইল তৈরি করার দরকার নেই, কারণ কেবলমাত্র ক্ষেত্রে পৃথক দুটি ফাইলের নাম প্রথম স্থানে থাকতে পারে না, রেফ

এটি দেখানোর জন্য:

$ mkdir test
$ cd test
$ touch X x
$ ls -l 
total 0
-rw-r--r--  1 alexharvey  wheel  0 26 Sep 20:20 X
$ mv X x
$ ls -l 
total 0
-rw-r--r--  1 alexharvey  wheel  0 26 Sep 20:20 x

হ্যাঁ - তবে আপনার উদাহরণ থেকে বোঝা যায় যে আপনি 'এমভি এক্স এক্স' ব্যবহার করে ফাইলের নাম ছোট করতে পারেন। সুতরাং এটি শুধুমাত্র ছিল যে আমি মন্তব্য।
সিপিলুডান

মোজাভেভ 10.14.5: # টাচ এক্স এক্স # এলএস -la মোট 0 -rw-r - r-- 1 টি মূল মূল 0 জুন 24 15:19 এক্স # এমভি এক্স এক্স এমভি: 'এক্স' এবং 'এক্স' একই ফাইল # ls -la -rw-r - r-- 1 টি মূল মূল 0 জুন 24 15:19 এক্স
সিপিলুদন

দু: খজনক বিন্যাসের জন্য দুঃখিত। সেখানে আমার প্রতি দয়া ছিল না।
সিপিলুডান

1
এবং আমার খারাপ - একটি শেয়ার্ড ড্রাইভে আমার রাস্পবেরিতে একটি সংঘাতের মধ্যে ছিল (hfsplus ফর্ম্যাট) - সেখানে এটি কাজ করে না। তবে স্থানীয়ভাবে আমার ম্যাক এটি করে।
সিপিলুডান

আমি ইন * জন্য; do j = $ (টিআর '[: উচ্চতর:]' '[: নিম্ন:]' <<< "$ i"); এমভি "$ i" "$ জে"; ক্যাটালিনা এ আমার জন্য কাজ করেছে। ধন্যবাদ।
সিনান এলডেম

2

একটি মাছের শেল সংস্করণ:

for old in *
    set new (echo $old | tr '[A-Z]' '[a-z]')
    mv $old $new
end
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.