ভবিষ্যতে তারা সহায়ক হতে পারে এই আশায় আমি আরও দুটি সমাধান পোস্ট করতে যাচ্ছি। এগুলি কাজ করে লিনাক্স প্রশাসকদের কাছ থেকে এসেছিল। এই পেরেকটিতে কত হাতুড়ি কাজ করবে তা কেবল দেখানোর জন্য যায়!
সমাধান 1:
হাই ডেনহাম,
আমি এখানে কয়েকটি অনুমান করতেই চলেছি, উদাহরণস্বরূপ যে "XXX সিজন #" দিয়ে ডিরেক্টরিটির অংশটি সর্বদা "বাইরের" ডিরেক্টরিতে থাকবে (পাতার নোড)।
যাই হোক না কেন, আমি একটু স্ক্রিপ্ট লিখব। এর মতো কিছু কাজ করা উচিত (ডিরেক্টরিগুলির সমস্ত স্পেস ক্যাপচার করে তা নিশ্চিত করতে ভেরিয়েবলগুলির চারপাশে ডাবল উক্তিগুলি নোট করুন):
find /media/Expansion2/Series/ -type d | while read olddir
do
newdir=`echo "${olddir}" | awk -F "/" '$NF ~ /Season/ { last=substr($NF,index($NF, "Season")); while (i<(NF-1)) { i++; printf("/%s", $i) }; printf("/%s\n", last) } $NF !~ /Season/ { print }'`
if [ "${olddir}" != "${newdir}" ]
then
mv "${olddir}" "${newdir}"
fi
done
অবশ্যই "mv" $ {olddir} "" $ {newdir} "" কমান্ড দিয়ে এটি চালানোর আগে আপনি নিশ্চিত হওয়ার জন্য "প্রতিধ্বনি" $ {olddir} "" $ {newdir something "" এর মতো কিছু রাখা উচিত আপনার প্রত্যাশিত ফলাফলগুলি পাওয়া বা আপনি অন্য মাথাব্যথার সাথে শেষ করতে পারেন :- পি
সমাধান 2:
হাই ডেনহাম,
বেশিরভাগ উত্তর ইতিমধ্যে প্রশ্নে ছিল। যাইহোক সিরিজ ফোল্ডার থেকে নীচের মতো কিছু চালানো ঠিক কাজ করা উচিত:
find -mindepth 2 -maxdepth 2 -type d | while read dir; do mv -T "$dir" "`dirname "$dir"`/`basename "$dir" | sed "s/.*Season \([0-9]*\)$/Season \1/i"`"; done
ব্যাখ্যা:
• সন্ধান করুন -মাইন্ডপথ 2 -ম্যাক্সডেপথ 2-টাইপ ডি (ডিরেক্টরিগুলি দুটি স্তরের নীচে তালিকাবদ্ধ করুন)
• পড়ার সময়; (প্রতিটি ডিয়ারের লুপ)
• এমভি -টি "$ দির" (উত্স দিরকে সরান ... -তাহলে ত্রুটি পেতে প্রয়োজন হয় যদি Seতু ফোল্ডারগুলি অনন্য না থাকে অর্থাৎ আপনার কাছে "বিগ ব্যাং থিওরি সিজন না থাকে) 22 "এবং" একই ডিরেক্টরিতে "মরসুম 22")
• dirname "$ dir" যেখানে dir • বেসনাম "$ dir" সেই ডিরেক্টরিটি • সেড
"s /। Seতুটির
নাম দেয় ([0-9]) ) $ / মরসুম \ 1 / i "কেবলমাত্র ক্ষেত্রে ক্ষেত্রে সংবেদনশীল রিজেক্সেপ দিয়ে যাদুটি সম্পূর্ণ করে।
আমার ছোট পরীক্ষায় এটি কাজ করেছে (এমভির আগে প্রতিধ্বনি দিয়ে প্রথমে চেষ্টা করুন):
someuser@linux-box:/tmp/Series$ find
.
./The Big Bang Theory
./The Big Bang Theory/Season 2
./The Big Bang Theory/Season 2/file1.avi
./The Big Bang Theory/Season 2/file 3.avi
./The Big Bang Theory/Season 2/file2.avi
./The Big Bang Theory/Season 2/file
./The Big Bang Theory/Season 2/3.avi
./The Big Bang Theory/The Big Bang Theory Season 1
./The Big Bang Theory/The Big Bang Theory Season 1/file1.avi
./The Big Bang Theory/The Big Bang Theory Season 1/file 3.avi
./The Big Bang Theory/The Big Bang Theory Season 1/file2.avi
./The Big Bang Theory/The Big Bang Theory Season 1/file
./The Big Bang Theory/The Big Bang Theory Season 1/3.avi
./Other Series
./Other Series/Season 2
./Other Series/Stre dsfdf sd dSeason 3
someuser@linux-box:/tmp/Series$ find -mindepth 2 -maxdepth 2 -type d | while read dir; do mv -T "$dir" "dirname "$dir"
/basename "$dir" | sed "s/.*Season \([0-9]*\)$/Season \1/i"
"; done
mv: ./The Big Bang Theory/Season 2' and
./The Big Bang Theory/Season 2' are the same file
mv: ./Other Series/Season 2' and
./Other Series/Season 2' are the same file
someuser@linux-box:/tmp/Series$ find
.
./The Big Bang Theory
./The Big Bang Theory/Season 2
./The Big Bang Theory/Season 2/file1.avi
./The Big Bang Theory/Season 2/file 3.avi
./The Big Bang Theory/Season 2/file2.avi
./The Big Bang Theory/Season 2/file
./The Big Bang Theory/Season 2/3.avi
./The Big Bang Theory/Season 1
./The Big Bang Theory/Season 1/file1.avi
./The Big Bang Theory/Season 1/file 3.avi
./The Big Bang Theory/Season 1/file2.avi
./The Big Bang Theory/Season 1/file
./The Big Bang Theory/Season 1/3.avi
./Other Series
./Other Series/Season 3
./Other Series/Season 2