में एक निर्देशिका यदि एक फ़ाइल एक निर्देशिका उपयोग कर रहा है मुझे पता है आप परीक्षण कर सकते हैं कर रहा हूँ नहीं है:टेस्ट करता है, तो फ़ाइल पर्ल
if(-d $filename)
लेकिन आप कैसे परीक्षण कर सकते हैं अगर यह एक निर्देशिका नहीं है?
में एक निर्देशिका यदि एक फ़ाइल एक निर्देशिका उपयोग कर रहा है मुझे पता है आप परीक्षण कर सकते हैं कर रहा हूँ नहीं है:टेस्ट करता है, तो फ़ाइल पर्ल
if(-d $filename)
लेकिन आप कैसे परीक्षण कर सकते हैं अगर यह एक निर्देशिका नहीं है?
क्या आपने निम्न का प्रयास करने का विचार किया है?
if (! -d $filename) ...
-d
का परिणाम है, सब के बाद इसलिए तार्किक नहीं ऑपरेटर !
ठीक काम करेगा, कुछ है कि एक बूलियन मान के रूप में इलाज किया जा सकता।
और, यदि आप कुछ विशिष्ट के बाद "निर्देशिका नहीं" के बाद हैं, तो here देखें। ऐसी कुछ चीजें हैं जो निर्देशिका नहीं हैं जिन्हें कभी-कभी नियमित फाइलों के रूप में इलाज करने के लिए समझ में नहीं आता है।
ध्यान रखें कि यह मानते हुए कि आप पहले ही सत्यापित कर चुके हैं कि फ़ाइल नाम मौजूद है। यदि आप एक गैर-मौजूद फ़ाइल नाम पर ! -d
करते हैं, तो यह सच हो जाएगा।
यह एक दार्शनिक बात के रूप में है कि क्या आप एक न के बराबर बात पर विचार करना "निर्देशिका नहीं" लेकिन होने के लिए, यदि आप सुनिश्चित करने के लिए यह रूप में अच्छी तरह से मौजूद है चाहता हूँ, कुछ की तरह है, तो आप -e
साथ संयोजन के रूप में ! -d
उपयोग कर सकते हैं:
if ((-e $filename) && (! -d $filename)) ...
मैं बस 30 वर्णों को पर्याप्त तेज़ नहीं कर सका ...मुझे लगता है कि सवाल वास्तव में मुझे डरा दिया। –
कृपया ध्यान दें: आप ओपी की ज़रूरत को कैसे पार करते हैं इस पर निर्भर करते हुए, यह उत्तर गलत हो सकता है। जिस तरह से मैंने इसे पार्स किया, वह जानना चाहता है कि कुछ फाइल है लेकिन कोई निर्देशिका नहीं है - यह उत्तर किसी ऐसी चीज़ के लिए भी सही होगा जो पहले फ़ाइल में नहीं है (उदा। '! -d NO_SUCH_FILE' सत्य लौटाता है)। – DVK
@ डीवीके, उस पर अच्छा बिंदु, सूट के लिए अद्यतन उत्तर। – paxdiablo
-f
ऑपरेटर परीक्षण यह देखने के लिए परीक्षण करता है कि कुछ "नियमित फ़ाइल" है या नहीं। इसमें निर्देशिकाएं शामिल नहीं हैं, लेकिन पाइप और डिवाइस नोड्स जैसी चीजों को भी शामिल नहीं करती हैं।
if (-f $filename) { ...
परीक्षण करने के लिए (कोई एक परीक्षण है):
if (-e $file && !-d $file) { # a file but not a directory }
कृपया ध्यान दें कि:
सभी उचित सम्मान के साथ, प्रश्नों के शब्दों के लिए पैक्सडीब्लो का जवाब गलत है (शुद्ध !-d
उपयोगकर्ता द्वारा पूछे जाने वाले कार्यों के लिए काम नहीं करता है क्योंकि यह यादृच्छिक चीज़/स्ट्रिंग निर्देशिका नहीं है, भले ही कोई फ़ाइल न हो निर्देशिका नहीं है)। जैसे !-d NO_SUCH_FILE
सच देता है।
ग्रेग का उत्तर पूरी तरह से सही हो सकता है कि मूल उपयोगकर्ता को "फाइल नहीं है" की परिभाषा में गैर-सादे फाइलों (जैसे प्रतीकात्मक लिंक, नामित पाइप, आदि ..) शामिल करना है या नहीं। अगर वे उन सभी विशेष "फाइलों" को शामिल करना चाहते थे, तो ग्रेग का जवाब भी गलत है क्योंकि "-f" उन्हें छोड़ देता है (जैसा कि ग्रेग ने अपने उत्तर में पहले ही जवाब दिया था)।
संभव डुप्लिकेट http://stackoverflow.com/questions/206320/how-do-i-distinguish-a-file-from- ए-डायरेक्टरी-इन-पर्ल) –
कैननिकल स्टैक ओवरफ़्लो प्रश्न है * [मैं पर्ल में किसी निर्देशिका से फ़ाइल को कैसे अलग कर सकता हूं?] (http://stackoverflow.com/questions/206320) *। –