এটি বোঝা যে এই হল গুরুত্বপূর্ণ না "ফাইল সিস্টেম দুর্নীতি" যে ধরনের fsck
সাহায্য করব। যতক্ষণ ফাইল সিস্টেম সম্পর্কিত, ফাইলের নামগুলি বাইটের যে কোনও অনুক্রম হতে পারে , যতক্ষণ না কোনও একক বাইটের মান 0x00 (ASCII NUL, সি-অফ-স্ট্রিং চিহ্নিতকারী) বা 0x2F (0x2F) না থাকে (/
, ডিরেক্টরি বিভাজক) থাকে না। (যদি কোনও ফাইলের নাম এতে কোনও 00 বা 2F বাইট এম্বেড করে থাকে তবে এটি fsck
ঠিক করা উচিত))
পরিবর্তে, আপনার কাছে ফাইলের নাম যা অ্যাপ্লিকেশন সফ্টওয়্যার (ডলফিন ls
) মনে করে যে এমন অক্ষরগুলি রয়েছে যা আপনার " লোকালে " তে প্রদর্শনযোগ্য নয় , তাই এটি তাদের স্থানধারক অক্ষর দ্বারা প্রতিস্থাপন করছে। আপনি এই অক্ষরগুলিও টাইপ করতে পারবেন না , সুতরাং ফাইলগুলি ম্যানিপুলেট করা আরও শক্ত, তবে আপনি নামটি টাইপ করা বা অনুলিপি না করে বা পেস্ট না করে আপনি যতক্ষণ না এটি করতে পারবেন ততক্ষণ আপনি এটি করতে পারবেন। উদাহরণস্বরূপ, আপনি যদি ডলফিনের মধ্যে থেকে সমস্যা ফাইলগুলি সরাসরি মুছে ফেলেন বা নামকরণ করেন, তবে জাস্ট ওয়ার্ক হওয়া উচিত (আমি এতদূর যেতে চাই যে এটি কাজ না করে, এটি ডলফিনের একটি বাগ)।
আপনার যদি শেল থেকে তাদের সম্পর্কে কিছু করার প্রয়োজন হয় (উদাহরণস্বরূপ, যদি সেগুলি মালিকানাধীন থাকে) root
জিইউআই প্রোগ্রামের এবং তাই এটি কোনও জিইউআই প্রোগ্রামের মাধ্যমে সংশোধন করা যায় না), আপনি তাদেরকে পরোক্ষভাবে "গ্লোব" নিদর্শন ব্যবহার করে নাম রাখতে পারেন, যা সঠিক ক্রমটিতে প্রসারিত হবে (গুলি) এর বাইট এবং পাশ দিয়ে গেছে।
এখন, অবশ্যই, আপনি দুর্ঘটনাক্রমে স্টাফ মুছতে চাইবেন না কারণ আপনার গ্লোব প্যাটার্নটি খুব বেশি মিলেছে, তাই আমার প্রস্তাবটি rename
প্রতিটি ফাইলের নামটিকে হেক্স এনকোডিংয়ে রূপান্তর করতে পার্ল ইউটিলিটিটি ব্যবহার করা হবে:
$ rename '$_ = unpack("H*", $_)' *
এটি কোনও তথ্যই নষ্ট করে না - ফাইলটি নিজেই নয়, অর্থাত্ যা অর্থ হতে পারে তা মংগল হওয়ার আগে ফাইলনেমে এনকোড করা হয়েছিল। উদাহরণস্বরূপ নির্দিষ্ট ফাইলগুলির জন্য এটি পূর্বাবস্থায় ফেরা যায়
$ rename '$_ = pack("H*", $_)' 696d706f7274616e742e646f63
সতর্কতা: দুটি rename
উত্স নামে , বিভিন্ন উত্স থেকে; উপরের কমান্ডগুলি কেবল পার্ল থেকে উদ্ভূত একের সাথে কাজ করবে। উবুন্টুতে, আপনি যেটি চান সেটি হ'ল "পুনর্নামকরণ" প্যাকেজ থেকে, "ইউজার-লিনাক্স" প্যাকেজটি নয়। rename -h
পার্থক্য করবে: এটি আপনি চান ...
$ rename -h
Usage:
rename [ -h|-m|-V ] [ -v ] [ -n ] [ -f ] [ -e|-E perlexpr]*|perlexpr
[ files ]
# ...
... এই কি আপনি চান না ...
$ rename -h
Usage:
rename [options] <expression> <replacement> <file>...
# ...
মূল বিষয়টি হ'ল "পার্লেক্সপ্রি" " পার্ল নামের পুনর্নবীকরণের পুরানো সংস্করণ থাকতে পারে যা উপরের সমস্ত বিকল্প বুঝতে পারে না, তবে আমি যে আদেশটি দেখিয়েছি তা এখনও কাজ করা উচিত।
সম্পাদনা করুন: 14.04 .5 এর নীচে অন্তর্ভুক্ত পার্ল স্ক্রিপ্ট rename
-h সুইচ সমর্থন করে না। man rename
শীর্ষস্থানটিতে কোন ক্ষেত্রে শীর্ষস্থান থাকবে তার ম্যান পৃষ্ঠাটি পরীক্ষা করে আপনি নিশ্চিত করতে পারেন যে আপনার সঠিক পৃষ্ঠাটি রয়েছে:
RENAME (1) পার্ল প্রোগ্রামারস রেফারেন্স গাইড RENAME (1)