প্রশ্ন কিভাবে ফাইল নাম এক্সপ্রেশন পরিবর্তন?


আমি তাদের মধ্যে একাধিক ফাইল ফোল্ডার আছে। আমি পরিবর্তন করতে চাই যে নাম একটি অভিব্যক্তি আছে।

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

find /path/ -type f -name '*0050ABC_01032013*'

আমাকে এই মত একটি আউটপুট দেয়:

/path/0050ABC_01032013/t1mri/T1pre_2013-3-1/default_analysis/segmentation/mesh/0050ABC_01032013_Rhemi.gii.minf
/path/0050ABC_01032013/t1mri/T1pre_2013-3-1/default_analysis/segmentation/Lcortex_0050ABC_01032013.nii
/path/0050ABC_01032013/t1mri/T1pre_2013-3-1/default_analysis/segmentation/Lgrey_white_0050ABC_01032013.nii.minf
/path/0050ABC_01032013/ct/CTpost_2013-3-1/registration/CT-0050ABC_01032013_CTpost_2013-3-1_TO_Scanner_Based.trm

আমি 0050ABC_01032013 থেকে 0044CBA_01011901 পরিবর্তন করতে চাই।

আমি এটা চেষ্টা করেছি:

find /path/ -type f -name '*0050ABC_01032013*' -execdir rename s/\.\/(w+)0050ABC_01032013(w+)$/$10044CBA_01011901$2/' {} \;

কিন্তু এটা কাজ করছে না। আমার কি করা উচিৎ?


5
2017-11-29 09:04


উত্স


প্রশ্ন জিজ্ঞাসা করার সময়, আমাদের কিছু বলছে যে "কাজ করে না" প্রায় নিরর্থক। সবসময় কি ঘটেছে ঠিক ব্যাখ্যা করুন। এটা কিভাবে ব্যর্থ হয়েছে? সেখানে কি ত্রুটি বার্তা ছিল? এটা কি সব কিছু কি? এটা কিছু কিন্তু ভুল জিনিস কি? - terdon♦


উত্তর:


rename যে চতুর না :) শুধু আপনি পরিবর্তন করতে চান অংশ উল্লেখ করুন এবং বাকি একা একা থাকবে। ব্যবহার g পাথের সমস্ত ঘটনা সংশোধন করতে (ডিরেক্টরি নাম সহ)

find /path/ -type f -name '*0050ABC_01032013*' -exec rename -n 's/0050ABC_01032013/0044CBA_01011901/g' '{}' \;

অপসারণ -n সত্যিই ফাইল নামকরণ পরীক্ষা করার পরে

find /path/ -type f -name '*0050ABC_01032013*' -exec rename 's/0050ABC_01032013/0044CBA_01011901/g' '{}' \;

যদি আপনি একই নামে এবং আপনার সাথে পথের কোথাও কোন ডিরেক্টরি থাকে করো না ডিরেক্টরি নাম পরিবর্তন করতে চান, আপনি নিশ্চিত করতে পারেন বেসিনেমটি এভাবে সংশোধন করা হয়

find /path/ -type f -name '*0050ABC_01032013*' -exec rename -n 's/0050ABC_01032013([^\/]*)$/0044CBA_01011901$1/' '{}' \;

এটি আছে যদি স্ট্রিং মিলে যায় / চরিত্র এর পরে কোথাও।


6
2017-11-29 09:12



হাই, উত্তরটির জন্য ধন্যবাদ কিন্তু এটি কাজ বলে মনে হচ্ছে না: /home/b67-belledone/test_bash_script/0050ROT_01032013/t1mri/T1pre_2013-3-1/y_0050ROT_01032013_inverse.nii.minf নামকরণ / home / b67-beldone / test_bash_script / 0044CBA_01011901 / t1mri / T1pre_2013-3-1 / y_0050ROT_01032013_inverse.nii.minf এটি ডিরেক্টরি নাম পরিবর্তন করে তবে ফাইল নাম নয় - p.deman
find / path / -type f -name '0050ABC_01032013'-exec rename -n গুলি / 0050ABC_01032013 / 0044CBA_01011901 /' '{}' \\; পাথ ফাইলের পাথ, ডিরেক্টরি নয়, খুঁজে বের করার কোন সমস্যা নেই। এটি এমন একটি নাম যা এখানে ফাইল নাম পরিবর্তন করে না তবে ডিরেক্টরিটির সাথে সম্পর্কিত অভিব্যক্তিটি পরিবর্তন করে এবং ফাইলের নামটিতে অভিব্যক্তি নয় - p.deman
@ p.deman সম্পাদিত, যে সম্পর্কে দুঃখিত :) - Zanna
ভাল ধন্যবাদ কাজ মনে হয় !!! - p.deman
@ p.deman যে শুনতে মহান :) - Zanna