ফোল্ডারে ব্যাচটির পুনর্নামকরণ ফাইলগুলি


10

আমি কোনও ফোল্ডারে ফাইল নাম থেকে কিছু পাঠ্য কেটে ফেলি?

আমি বর্তমানে চেষ্টা করছি:

rename s/"NEWER_(.*?)"//g *

কিন্তু কিছুই এটির নামকরণ হচ্ছে না

আমার কাছে একটি ফাদার ফোল্ডার রয়েছে, যার মধ্যে একটি গুচ্ছ সাব-ফোল্ডার রয়েছে ফাইলগুলির মধ্যে, ওয়ানড্রাইভ ভাবেন যে একটি "(NEWER_Timestamp)" এ যুক্ত করার জন্য একটি দুর্দান্ত ধারণা হবে এবং আমি এটি মুছে ফেলতে চাই।

ফাইলের নাম উদাহরণ:

getyou.ico (NEWER_1417529079.87)
o7pm.ico (NEWER_1417529184.89)
o7th.ico (NEWER_1417529135.81)

2
আপনি একটি উদাহরণ ফাইল নাম পোস্ট করতে পারেন?
মুরু

নিশ্চিত করুন। কারও সাথে আপডেট হওয়া প্রশ্ন
কেভিন

উত্তর:


8

নিম্নলিখিত চেষ্টা করুন:

find /path/to/parrent-dir -type f -exec rename -n 's:[^/]*(.*) .*$:$1:' {} +

./o7th.ico (NEWER_1417529135.81)                                 renamed as /o7th.ico
./sub-dir (NEWER_1417529135.81)/getyou.ico (NEWER_1417529079.87) renamed as /sub-dir (NEWER_1417529135.81)/getyou.ico
./sub-dir (NEWER_1417529135.81)/o7pm.ico (NEWER_1417529184.89)   renamed as /sub-dir (NEWER_1417529135.81)/o7pm.ico
./getyou.ico (NEWER_1417529079.87)                               renamed as /getyou.ico
./o7pm.ico (NEWER_1417529184.89)                                 renamed as /o7pm.ico
  • সমস্ত [^/]*(.*) .*$পাথের কেবলমাত্র শেষ অংশের সাথে মেলে যা একটিতে নেই /। এবং
  • উপরের রেজেক্সে, (.*)শেষের পরে /এবং একটি স্পেসের আগে সমস্ত কিছুর সাথে মিলে যাওয়া একটি গ্রুপ । এটির ব্যাক-রেফারেন্স হবে $1
  • .*$$স্থানের পরে ফাইলের নামের শেষের সাথে সমস্ত কিছু মেলে ।
  • অবশেষে নাম পরিবর্তনের অংশে s/.../REPLACEMENT/, আমরা কেবল ম্যাচ গ্রুপ হিসাবে পরিচিত, সর্বশেষ \এবং একটি স্থানের মধ্যে যে (.*)ম্যাচ গ্রুপ আছে।

2

আপনার রেগেক্সের বাইরের উদ্ধৃতিগুলি ব্যবহার করার কথা বিবেচনা করা উচিত (এর মধ্যে সেগুলি আক্ষরিক অর্থে উদ্ধৃতি হিসাবে নেওয়া হয়), এবং পালাতে হবে (। চেষ্টা করুন

rename -n 's/ \(NEWER_\d{10}.\d{2}\)$//' *NEWER*

অভিব্যক্তিটির যথার্থতা প্রয়োজনীয় নাও হতে পারে তবে ফাইলগুলি সংশোধন করার সময় আপনি খুব বেশি সতর্ক হতে পারবেন না।


এই সমস্ত কাজটি ঝুলছে reading filenames from STDINআমি ইতিমধ্যে প্যারেন্ট ফোল্ডারের ভিতরে যেখানে এই ফাইলগুলি রয়েছে
কেভিন

@ কেভিন "যদি কমান্ড লাইনে কোনও ফাইলের নাম দেওয়া না হয় তবে স্ট্যান্ডার্ড ইনপুট দিয়ে ফাইলের নামগুলি পড়তে হবে।" এবং যেহেতু শেলটি ছেড়ে যায় *NEWER*তেমন কোনও বিস্তৃতি পাওয়া না গেলে, আপনি অবশ্যই একটি ভুল করেছেন, বা কোনও শেল ব্যবহার করছেন যা কোনও মিল ছাড়াই অদম্য ওয়াইল্ডকার্ডকে প্রতিস্থাপন করেছে।
মুরু

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