एक निर्देशिका को फ़ाइल में या एक फ़ाइल को निर्देशिका में बदलना


15

मैं नाम की एक फाइल बनाना चाहता था test। संयोग से मैं mkdir testइसके बजाय दौड़ता हूं touch test

क्या testनिर्देशिका नाम फ़ाइल में परिवर्तित करना संभव है test?

testउसी नाम से एक निर्देशिका में दर्ज की गई फ़ाइल को परिवर्तित करने के बारे में क्या ?


5
rm -f test && touch testइसके अलावा, मुझे वास्तव में पता नहीं है
किवी

@ कीवी हाँ, लेकिन मैं एक अंतर्निहित कमांड की कल्पना कर रहा हूँ जिसे इस कार्य को करने के लिए डिज़ाइन किया गया है।
Ionică Bizău

जवाबों:


12

यह किसी भी यूनिक्स या लिनक्स के लिए संभव नहीं है जिसे मैंने कभी छुआ है।

कुछ पुराने यूनिक्स के तहत, निर्देशिकाएं फाइलें हैं, विशेष रूप से चिह्नित हैं, लेकिन अभी भी फाइलें हैं। आप catउदाहरण के लिए, SunOS के तहत एक निर्देशिका को पढ़ने में सक्षम थे । बहुत सारे आधुनिक फाइल सिस्टम में B + पेड़ या कुछ अन्य डिस्क-डिस्क डेटा संरचना के रूप में निर्देशिकाएं हो सकती हैं। इसलिए किसी डायरेक्टरी में फ़ाइल को मोड़ना या इसके विपरीत हमेशा एक ही नाम के साथ डिलीट और री-क्रिएशन की आवश्यकता होती है।


1
दिलचस्प। यदि कोई भी समाधान नहीं करता है तो मैं इस उत्तर को चिह्नित करूंगा। :-)
इओनिया बिज़ोउ

5

नहीं, ऐसी कोई आज्ञा नहीं है क्योंकि इसमें कोई मतलब नहीं होगा। आपका प्रश्न एक बॉक्स को एक सपाट आयत में बदलने का तरीका पूछने जैसा है। आप बॉक्स (निर्देशिका) में चीजों के साथ क्या करेंगे? आयताकार उस बॉक्स के अनुरूप कैसे होगा जो यह आया था?

फ़ाइलें और निर्देशिका पूरी तरह से अलग कार्य करते हैं। जबकि एक निर्देशिका वास्तव में * निक्स सिस्टम में एक फाइल है, जो केवल सिस्टम के इंटर्नल पर लागू होती है और जो आप, उपयोगकर्ता, नहीं देखते हैं। इसलिए, किसी फ़ाइल को डायरेक्टरी में बदलना, या इसके विपरीत, हमेशा फ़ाइल को हटाने और डायरेक्टरी बनाने में शामिल होगा। आप जिस सर्वश्रेष्ठ के लिए आशा कर सकते हैं, वही इनोड का उपयोग करेगा, लेकिन फिर, इसमें बहुत अधिक बिंदु नहीं होगा।


यह कहना कि इसका कोई मतलब नहीं है, आपकी राय नहीं है।
श्रीधर सरनोबत

जब आप एक फ़ाइल में "कन्वर्ट" करते हैं तो user7000 एक निर्देशिका की सामग्री के साथ क्या करेगा?
terdon

एक फाइल सिस्टम एक ट्री स्ट्रक्चर में डेटा स्टोर करता है। कंप्यूटर विज्ञान में, ट्री नोड्स जो लीफ नोड्स होते हैं, जब आप बच्चों को उनसे जोड़ते हैं तो वे आंतरिक नोड बन सकते हैं। और नहीं, मैं एक डेटाबेस का उपयोग नहीं करने जा रहा हूं जब एक फाइल सिस्टम का सामना करना पड़ता है।
श्रीधर सरनोबत

2

आप क्या चाहते हैं करने के लिए एक समारोह बनाएँ। ( bashया अन्य बॉर्न / POSIX जैसे शेल ग्रहण किया)

$ dir2file() { rmdir -- "$1" && touch -- "$1";}
$ mkdir adir
$ dir2file adir
$ ls -l adir
-rw-r--r-- 1 xtian xtian 0 2014-03-04 14:59 adir
$ 

मैं जानबूझकर उपयोग rmdirकरता हूं जो विफल होगा यदि adirनिर्देशिका नहीं है या खाली नहीं है ( -fबल के लिए नहीं )। सफल होने पर touchही चलेगा rmdir

आप अपनी शेल कस्टमाइज़ेशन फ़ाइल (के .bashrcलिए bash) में फंक्शन डेफिनिशन डाल सकते हैं ।


@ स्टेफ़ेन चेज़लस क्या करता --है?
X Tian

2
--झंडे के अंत को चिह्नित करता है rmdirऔर touchकिसी भी चीज़ को जानता है, यह एक फ़ाइल नाम है, भले ही वह इसके साथ शुरू हो -
केविन

2

उन लोगों को यह सोचकर कि आप ऐसा क्यों करना चाहते हैं, इस सूत्र का पालन करें:

https://community.linksys.com/t5/Wireless-Routers/Media-files-changing-to-folder-types/td-p/504192/highlight/true

जाहिरा तौर पर फर्मवेयर में एक बग फ़ाइल के लिए निर्देशिका प्रविष्टि में थोड़ा फ़्लिप किया गया, जिससे ओएस को लगता है कि यह फ़ाइल के बजाय एक फ़ोल्डर है।

जबकि मेरे पास प्रश्न में Linksys राउटर नहीं है, कुछ ने मेरे सभी .jpg फाइलों को खाली फ़ोल्डरों में बदल दिया। यदि बिट को (या जो भी) फ्लिप करने के लिए कोई व्यक्ति कहता है कि NTFS निर्देशिका प्रविष्टि एक फ़ाइल बनाम एक फ़ोल्डर है, तो मैं इसके बारे में जानना चाहूंगा।

उस 2-वर्षीय लंबे धागे में से एक समाधान में कहा गया है कि यदि हार्ड ड्राइव में फ़ोल्डर्स-कि-यूज़-टू-बी-फाइल्स एक मैक मैक ओएस एक्स से जुड़ी हैं, तो मैक उन्हें फिर से फाइल के रूप में देखेगा, और वे मैक पर एक फ़ोल्डर में कॉपी किया जा सकता है। मेरे पास एक मैक नहीं है कि इसे आज़माने के लिए, इसलिए अगर किसी को बिट को फ्लिप करने का तरीका पता हो ...


1

सबसे पहले, टर्मिनल तक पहुंच प्राप्त करें और फ़ाइल केls -al file साथ निष्पादित करें जिस फ़ाइल को आप एक वास्तविक फ़ोल्डर में वापस बदलना चाहते हैं। यदि फ़ाइलें और उप-निर्देशिका सूचीबद्ध हैं, तो इसका मतलब है कि आपकी "फ़ाइल" पहले वास्तविक सामग्री के साथ एक फ़ोल्डर थी और आप जारी रख सकते हैं:

निष्पादित:

sudo chmod 700 /

या

sudo chmod 700 file

सिस्टम को पुनरारंभ करें और टर्मिनल एक्सेस फिर से हासिल करें और निष्पादित करें:

sudo chmod 744 /

या

sudo chmod 744 file

याद है: "फ़ाइल" को उस फ़ाइल से प्रतिस्थापित किया जाना चाहिए जिसे आप एक वास्तविक फ़ोल्डर में बदलना चाहते हैं।

यह इस समस्या को हल करने के लिए सिर्फ एक मनमाना तरीका है लेकिन यह अनुमति विसंगतियों का निर्माण करता है जिसका आप या तो उपयोग कर सकते हैं fsck -f ठीक लिए (जबकि कोर्स के अन-माउंटेड) या मैन्युअल रूप से आवश्यकतानुसार नई अनुमतियाँ सेट करें।

फिर से, यह केवल एक गैर-खाली फ़ोल्डर वाली फ़ाइल को हटाने से बचने का एक सिद्ध तरीका है।


दिलचस्प दृष्टिकोण ...
eyoung100
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.