जवाबों:
फ़ाइल सिस्टम तुलना के बारे में विकिपीडिया पृष्ठ देखें , विशेष रूप से कॉलम में अधिकतम फ़ाइल नाम लंबाई ।
यहाँ लोकप्रिय फ़ाइल सिस्टम में कुछ फ़ाइल नाम की सीमाएँ दी गई हैं:
BTRFS 255 bytes
exFAT 255 UTF-16 characters
ext2 255 bytes
ext3 255 bytes
ext3cow 255 bytes
ext4 255 bytes
FAT32 8.3 (255 UCS-2 code units with VFAT LFNs)
NTFS 255 characters
XFS 255 bytes
मैंने यहां पढ़ा है कि सिस्टम हेडर में पथ की लंबाई सीमा है। फ़ाइल नाम की लंबाई सीमा भी है। मेरे सिस्टम पर यह फ़ाइल है:
/usr/src/linux-headers-2.6.38-10/include/linux/limits.h
और सी-लैंग परिभाषित करता है:
#define NAME_MAX 255 /* # chars in a file name */
#define PATH_MAX 4096 /* # chars in a path name including nul */
और कुछ और।
मैं अन्य उत्तरों का संदर्भ देता हूं, कृपया उन्हें बढ़ाएं।
क्या लिनक्स पर कोई फ़ाइल नाम या पथ लंबाई सीमाएं हैं?
हां, फ़ाइल नाम और पाथने की लंबाई सीमित है:
linux/limits.h
के रूप में द्वारा कहा गया SFP ।इन गुणों को गतिशील रूप से प्राप्त करने के लिए:
pathconf
औरfpathconf
जैसा कि माइकल आरोन सफ़्यान द्वारा प्रस्तावित किया गया हैलिनक्स पर उपलब्ध टिमgetconf
द्वारा प्रस्तावित कमांड का उपयोग करें :
$ getconf NAME_MAX /mnt/sda2/
255
$ getconf PATH_MAX /mnt/sda3/
4096
और समय बचाने के लिए (और इसे स्मृति में लंगर डालना):
ext2, ext3, ext4, zfs: कोई पथनाम सीमा नहीं; 255 बाइट्स फ़ाइल नाम सीमा।
PATH_MAX = 4096
हालांकि, पूर्ण पथ के साथ सीमित हैं । यदि आपके कार्यक्रम को सापेक्ष पथों का उपयोग करने में सक्षम है और आप अपनी कार्यशील निर्देशिका को पहले बदलते हैं, तो इसके आसपास काम किया जा सकता है।
उन फ़ाइल सिस्टम नाम लंबाई हैं। "linux" में खुद भी कुछ है। उदाहरण के लिए, बिट्स / stdio_lim.h से:
# define FILENAME_MAX 4096
locate
।
पोर्टेबल तरीके से लिनक्स पर पथों की अधिकतम लंबाई निर्धारित करने का कोई तरीका नहीं है । मेरे सिस्टम पर:
$ getconf PATH_MAX /
4096
$ getconf _POSIX_PATH_MAX /
4096
लेकिन मैं आसानी से 4096 पात्रों की तुलना में बहुत लंबे समय तक पथ बना सकता हूं। इसके बजाय PATH_MAX
एक निचली सीमा के रूप में देखें । आपको गारंटी है कि यह लंबे समय तक पथ बनाने में सक्षम हैं, लेकिन आप बहुत लंबे समय तक बनाने में सक्षम हो सकते हैं।
os.pathconf()
मॉड्यूल के कुछ उत्तर होंगे; यदि पायथन पोर्ट कोई अच्छा है, तो वे उचित होना चाहिए।
आपको निर्दिष्ट आइटम के बारे में रनटाइम मान प्राप्त करने के लिए हमेशा इस तरह से pathconf या कुछ फ़ंक्शन का उपयोग करना चाहिए , जैसा कि इस पृष्ठ ने कहा है कि:
हालांकि, यह ध्यान दिया जाना चाहिए कि कई सूचीबद्ध सीमाएं अपरिवर्तनीय नहीं हैं, और रनटाइम के दौरान, सीमा के मूल्य इस हेडर में दिए गए कारणों से भिन्न हो सकते हैं, निम्नलिखित कारणों से:
सीमा pathname- निर्भर है।
कम्पाइल और रनटाइम मशीनों के बीच सीमा भिन्न होती है।
इन कारणों से, एक एप्लिकेशन रनटाइम में एक सीमा के वास्तविक मूल्य को निर्धारित करने के लिए fpathconf (), pathconf (), और sysconf () फ़ंक्शन का उपयोग कर सकता है।
यह सिस्टम लिमिट्स में निर्दिष्ट है । हेडर फाइल।
यहाँ इन फ़ाइलों में से एक है:
cat /usr/include/linux/limits.h
...
#define NAME_MAX 255 /* # chars in a file name */
#define PATH_MAX 4096 /* # chars in a path name including nul */
...
यहां इस फ़ाइल की प्रतियां स्थित हैं और वे जिन मूल्यों को परिभाषित करते हैं:
find /usr | grep limits.h | xargs -I {} grep -H 'NAME_MAX' {}
आउटपुट:
...
/usr/include/linux/limits.h:#define NAME_MAX 255 /* # chars in a file name */
...