ফাইলনেমে অনুমোদিত অক্ষর


138

অপারেটিং সিস্টেমের উপর নির্ভর করে ফাইলনেমগুলিতে আমি অনুমোদিত অক্ষরের একটি তালিকা কোথায় পাব? (যেমন লিনাক্সে, :ফাইলের নামগুলিতে অক্ষরটি অনুমোদিত তবে উইন্ডোজে নয়)


.NET উইন্ডোজের জন্য সেই তথ্য সরবরাহ করে।
লেপি


8
@ ক্রেকার নোট করুন যে আপনার প্রশ্নটি অ্যান্ড্রয়েড সম্পর্কিত
কংগ্রেসবঙ্গাস


উত্তর:


106

আপনার উইকিপিডিয়া ফাইলের নাম পৃষ্ঠা দিয়ে শুরু করা উচিত । এটিতে একটি শালীন আকারের টেবিল রয়েছে ( ফাইলের নাম সীমাবদ্ধতার তুলনা ), বেশ কয়েকটি ফাইল সিস্টেমের জন্য সংরক্ষিত অক্ষরগুলি তালিকাভুক্ত করে।

এটিতে এমএস-ডস-এর অধীনে সংরক্ষিত ফাইলের নাম সহ প্রতিটি ফাইল সিস্টেম সম্পর্কিত অন্যান্য তথ্যের আধিক্য রয়েছে CON। আমি উল্লেখ করেছি যে কেবল তখনই আমার দ্বারা দংশন হয়েছিল যখন আমি কোনও ফাইল অন্তর্ভুক্ত করে ছোট করে const.hদিয়েছিলাম con.hএবং সংকলকটি কেন স্তব্ধ হয়েছিল তা নির্ধারণের জন্য আধ ঘন্টা ব্যয় করেছিল।

ডিভাইসগুলির জন্য ডস উপেক্ষা করা এক্সটেনশানগুলি সরিয়ে দেয় যাতে ইনপুট কনসোলের ( con.hহুবহু con, সংকলকটি এটি চালিয়ে যাওয়ার আগে শিরোনাম ফাইলটিতে টাইপ করার অপেক্ষায় ছিল )।


4
আমি উইকিপিডিয়া পৃষ্ঠাটি কিছুটা অস্পষ্ট এবং বিভ্রান্ত মনে করি, যেমন "কিছু অপারেটিং সিস্টেমগুলি কিছু নির্দিষ্ট অক্ষরকে নিষিদ্ধ করে ..."। আমি আসলে একটি সম্পূর্ণ টেবিল সন্ধান করছি যা সমস্ত অনুমোদিত এবং অস্বীকৃত অক্ষরের তালিকা করে।
পাইথন ডুড

7
@ পেথন, সেই টেবিলটি তাকান না, এর নীচে বড় হুঙ্কিনের দিকে তাকান (শিরোনামে "ফাইলের নাম সীমাবদ্ধতার তুলনা")। এটি এর সামগ্রীতে এতটা অস্পষ্ট নয়
প্যাক্সিডিয়াবল্লো

52
সম্ভবত আপনাকে কেবল POSIX "Fully portable filenames"এন্ট্রিটি দেখতে হবে যা এগুলি তালিকাভুক্ত করেছে:A–Z a–z 0–9 . _ -
ভ্লাদিমির কর্নিয়া

1
@ ভ্লাদিমিরকর্নিয়া ধন্যবাদ! লিঙ্কগুলি: pubs.opengroup.org/onlinepubs/9699919799/basedefs/… || pubs.opengroup.org/onlinepubs/9699919799/basedefs/…
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

1
@CpILL উইন্ডোজ, ওএসএক্স এবং লিনাক্সের চেয়ে আরও অনেকগুলি ওএস রয়েছে ... কারও কারও কাছে খুব সাধারণ ফাইল সিস্টেম রয়েছে।
মার্জিত পাশা

32

ঠিক আছে, তাই এ খুঁজছেন ফাইল সিস্টেম তুলনা আপনি শুধুমাত্র প্রধান খেলোয়াড়দের ফাইল সিস্টেম যত্নশীল:

তাই কোনো বাইট ছাড়া NUL, \, /, :, *, ", <, >, |/ ফোল্ডার কল এবং আপনি ফাইল থাকতে পারে না .বা ..এবং (অবশ্যই) কোন নিয়ন্ত্রণ অক্ষর।


7
এটি সঠিক নয়। লিনাক্স অনুমতি দেয় না /। উইন্ডোজ ব্যাকস্ল্যাশ এবং কিছু স্ট্রিং (উদাঃ CON) অনুমতি দেয় না ।
কেগাডেক

7
হ্যাঁ, তাই আমি বাদে বললাম ।
সিপিল

2
ম্যাক (চলমান এইচএফএস +) এ, আমি :তাদের নামে ফাইল তৈরি করতে সক্ষম হয়েছি ।
ইরওয়ামান

এটি সঠিক নয়। উইন্ডোজ মঞ্জুরি দেয় না এমন আরও অক্ষরের জন্য এই উত্তরটি দেখুন ।
mbomb007

উইন্ডোজ কোনও নিয়ন্ত্রণের
অক্ষরগুলিকে

23

উইন্ডোজ ওএসে একটি ফাইল তৈরি করুন এবং এটিকে \ফাইলের মতো একটি অবৈধ অক্ষর দিন । ফলস্বরূপ আপনি একটি ফাইলের নামটিতে সমস্ত অবৈধ অক্ষর সহ একটি পপআপ পাবেন।

এখানে চিত্র বর্ণনা লিখুন


5

/ফাইন্ডারে ম্যাক ওএস এক্স (বর্তমানে ম্যাকোস নামে পরিচিত) সম্পর্কে আরও সুনির্দিষ্ট :হওয়ার জন্য ইউনিক্স ফাইল সিস্টেমে ব্যাখ্যা করা হয়েছে।

এটি অ্যাপল ক্লাসিক ম্যাক ওএস থেকে সরে গেলে পশ্চাদপদ সামঞ্জস্যের জন্য করা হয়েছিল।

/ফাইন্ডারে একটি ফাইলের নাম ব্যবহার করা বৈধ , টার্মিনালে একই ফাইলটি এটির সাথে প্রদর্শিত হবে :

এবং এটি অন্যদিকেও কাজ করে: আপনি /টার্মিনালের সাথে কোনও ফাইলের নাম ব্যবহার করতে পারবেন না , তবে একটি :ঠিক আছে এবং /এটি ফাইন্ডারে প্রদর্শিত হবে।

কিছু অ্যাপ্লিকেশনগুলি আরও বিধিনিষেধযুক্ত হতে পারে এবং বিভ্রান্তি এড়াতে বা উভয় অক্ষরকে নিষিদ্ধ করতে পারে কারণ তারা আগের ক্লাসিক ম্যাক ওএস থেকে প্ল্যাটফর্মের মধ্যে নামের সামঞ্জস্যের জন্য যুক্তি রেখেছিল।


0

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

$file_name = preg_replace('/([^\x20-~]+)|([\\/:?"<>|]+)/g', '_', $client_specified_file_name);

মূলত এটি উইন্ডোজ এবং অন্যান্য ওএস-এর জন্য সমস্ত মুদ্রণযোগ্য এবং সংরক্ষিত অক্ষরগুলি বাদ দেয়। অন্যান্য লোকেল এবং কার্যকারিতা সমর্থন করার জন্য আপনি সহজেই প্যাটার্নটি প্রসারিত করতে পারেন


-1

পাইথনে ফাইলের নাম পরিষ্কার করার কোড এখানে।

import unicodedata

def clean_name(name, replace_space_with=None):
    """
    Remove invalid file name chars from the specified name

    :param name: the file name
    :param replace_space_with: if not none replace space with this string
    :return: a valid name for Win/Mac/Linux
    """

    # ref: https://en.wikipedia.org/wiki/Filename
    # ref: /programming/4814040/allowed-characters-in-filename
    # No control chars, no: /, \, ?, %, *, :, |, ", <, >

    # remove control chars
    name = ''.join(ch for ch in name if unicodedata.category(ch)[0] != 'C')

    cleaned_name = re.sub(r'[/\\?%*:|"<>]', '', name)
    if replace_space_with is not None:
        return cleaned_name.replace(' ', replace_space_with)
    return cleaned_name

2
কোডটি অবৈধ (সংরক্ষিত) নামের জন্য যাচাই করে না, এবং প্রতিস্থাপন_স্পেস_বিহীন একটি অবৈধ চরিত্রের জন্যও পরীক্ষা করে না। ফাইল নামের দৈর্ঘ্য সুযোগের বাইরে। সুতরাং, :return: a valid name for Win/Mac/Linuxসব পরিস্থিতিতে সত্য নয়।
ack
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.