एक्सटर्नल ड्राइव, ट्रैश को खाली नहीं कर सकता, rm एक फाइल देखता है, लेकिन ls -la नहीं करता है


9

मैं अपने बाहरी ड्राइव में एक संगीत फ़ोल्डर साफ़ कर रहा था और एक निर्देशिका मिली जिसे मैं कोशिश नहीं कर सकता कि मैं क्या करूं।

अगर मैं इसे GUI के माध्यम से कचरा बिन में डालता हूं

ऑपरेशन पूरा नहीं किया जा सकता क्योंकि आइटम "फ़ोल्डर" उपयोग में है।

अगर मैं rm -rfइसे टर्मिनल के माध्यम से हटाने के लिए उपयोग करता हूं

$ rm -rf folder/
rm: folder/: Directory not empty

अगर मैं ls -laइसकी सामग्री की जांच करने के लिए उपयोग करता हूं

$ ls -la
total 512
drwxrwxrwx  1 user  staff  131072 Jan  3  2017 .
drwxrwxrwx  1 user  staff  131072 Jan  3  2017 ..

अगर मैं rm -i *फ़ोल्डर के भीतर उपयोग करता हूं

$ rm -i *
rm: 03 - Ēlusion.mp3: No such file or directory

अगर मैं sudo lsof +D folder/यह जांचने के लिए उपयोग करता हूं कि क्या कोई फाइल खोली गई है

कार्यक्रम से बाहर निकलने पर कुछ भी नहीं।

यदि मैं डिस्क (वॉल्यूम) और वॉल्यूम को सुधारने के लिए डिस्क उपयोगिता का उपयोग करता हूं

स्वास्थ्य जांच हुई तो कोई मरम्मत शुरू नहीं हुई।

अगर मैं macOS को रीबूट करता हूं

मुद्दा बना रहता है।

अतिरिक्त जानकारी:

  • मैं ड्राइव के भीतर फ़ोल्डर को स्थानांतरित कर सकता हूं, लेकिन किसी अन्य ड्राइव पर नहीं।

  • मैं फ़ोल्डर का नाम बदल सकता हूं।

  • ls -i *.mp3रिटर्न ls: 03 - Ēlusion.mp3: No such file or directory, के रूप में ही rm -i *.mp3

  • फ़ाइल फाइंडर में दिखाई नहीं देती है, यह भ्रामक हिस्सा है, जो भी फ़ाइल नाम का मुद्दा टर्मिनल हो सकता है (मैं हमेशा इसे उपयोग करने के लिए सेट करता Unicode - UTF-8हूं), मुझे लगता है कि खेलने पर अधिक बल है।

सवालों के जवाब में, ls -ibनहीं , कुछ भी वापस नहीं करता है।

$ ls -i
$ ls -ib
$ ls -laib
total 512
2762318 drwxrwxrwx  1 user  staff  131072 Jan  3  2017 .
2685260 drwxrwxrwx  1 user  staff  131072 Jan  3  2017 ..

तो जाहिरा तौर पर इसमें कुछ है , लेकिन इसे ls -laदेख नहीं सकते, जबकि rm -iफ़ाइल नाम के साथ अजीब है?

get info GUI संदर्भ मेनू के माध्यम से पुष्टि की थी कि फ़ोल्डर में 1 आइटम है, लेकिन शून्य बाइट के साथ, और निश्चित रूप से खोजक में दिखाई नहीं देता है।

मुझे यकीन नहीं है कि इस बिंदु पर क्या करना है। बहुत सराहना की मदद करो!

(बाहरी ड्राइव पर 10.13.4 + एक्सफ़ैट का उपयोग करके)


1
क्या आपने अपने इच्छित सभी सामान का बैकअप लेने पर विचार किया है - शायद पहले से ही किसी भी तरह से बैकअप लिया गया है ... फिर शुरू करने के लिए उस ड्राइव को पूरी तरह से पुन: स्वरूपित करें?
सोलर माइक

करता है ls -bफ़ाइल दिखाते हैं? यदि हां, तो आप ls -biइनकोड प्राप्त कर सकते हैं और नीचे दिए गए उत्तर का अनुसरण कर सकते हैं , या वैकल्पिक रूप से -bआउटपुट में फ़ाइल नाम की प्रतिलिपि बना सकते हैं।
रीड

मेरा मानना ​​है कि मूल समस्या फाइलनाम के साथ नहीं है, ls -bi *.mp3ओपी में दिखाए गए परिणाम के समान है।
बिटिन

जवाबों:


10

यह समस्या 03 नाम की एक फ़ाइल के कारण प्रतीत होती है - mp3lusion.mp3 फ़ोल्डर नाम की निर्देशिका के भीतर स्थित है ।

क्योंकि Terminal.app फ़ाइल नामों में diacritical मार्क्स को प्रस्तुत करने में असमर्थ है - ठीक है, लेकिन यह आपके लिए सबसे सरल समाधान प्रदान करने के दायरे से परे है - यह फ़ाइल नाम छिपाकर अपनी विफलता को छुपाता है (अब से पहले मेरे द्वारा कुछ अनसुना) , शायद इसके हाई सिएरा में /.फाइल, /.वोल्फ्स और 64-बिट इनोड्स में बदलाव? रुको- कभी बुरा मत मानना; आपके सवाल का संपादन मुझे बताता है कि मैंने आपको गलत समझा।) वैसे भी, फ़ाइल का अस्तित्व विडंबना के साथ-साथ जाना जाता है। खोजक द्वारा ध्यान दें कि यह मौजूद नहीं है। जाहिर है, यह करता है। इसे कैसे बदला जाए:

सबसे पहले, फ़ाइल की इनकोड संख्या निर्धारित करें। Terminal.app में, cdनिर्देशिका "फ़ोल्डर" में और इस कमांड को जारी करें:ls -i *.mp3

प्रतिक्रिया के बाएं हाथ के कॉलम में दिए गए इनोड की संख्या स्ट्रिंग की प्रतिलिपि बनाएँ, जो कुछ इस तरह होगी

12345678 03 - E ̄lusion.mp3

- और इसे इस कमांड में डालें, जिससे इसका नाम बदलकर कुछ ऐसा हो सके जो टर्मिनल सही तरीके से प्रस्तुत कर सके:

find . -inum 12345678 -exec mv {} deletemenow \;

- "फोल्डरमेन" फाइल को "फोल्डर" फ़ोल्डर में देते हुए, आप दोनों को जिस भी तरीके से निपटाना हो वह आपके फैंस को सबसे अच्छा लगता है।


वाह, यह एक प्रभावशाली भयानक बग है।
क्राइसिस -ऑन स्ट्राइक-

2
मुझे नहीं लगता कि यह सही है। टर्मिनल एकल वर्णों को छिपा सकता है जिसे वह प्रस्तुत नहीं कर सकता है, लेकिन यह पाठ की पूरी पंक्ति को नहीं हटाएगा।
डस्कवफ-एक्टिव-

1
@duskwuff किसी भी तरह से ऐसा लगता है कि फ़ाइल नाम समस्या पैदा कर रहा है, इसलिए यह एक संभावित समाधान है।
JAB

क्षमा करें, लेकिन समस्या इससे अधिक जटिल लगती है: मैंने कोशिश की $ ls -i *.mp3, यह वापस आ गया ls: 03 - Ēlusion.mp3: No such file or directory
बिटिन

1
क्या आप ls -iशेल वाइल्डकार्ड विस्तार को हस्तक्षेप करने से रोकने के लिए बस निर्देशिका के भीतर चला सकते हैं ?
nohillside

9

मुझे इस सारांश में आने में बहुत समय लगा, लेकिन मुझे लगता है कि यह निश्चित उत्तर है।

मेरे मुद्दे का कारण एक प्रसिद्ध है :

ओएस एक्स एक अजीब है, दोनों में यह फ़ाइल नामों को सामान्य करता है और इसमें यह अधिक सामान्य एनएफसी के बजाय एनएफडी का उपयोग करता है

ऐतिहासिक रूप से (पुराना नहीं है, पूर्व 10.11 युग), ओएस एक्स + एचएफएस + सभी फाइलनामों पर एनएफडी फॉर्म लागू करता है , और आपको केवल कमांड और सिस्टम कॉल से एनएफडी परिणाम मिलेगा।

फिर चीजें बदलना शुरू हो जाती हैं, 10.11 में, कुछ सिस्टम कॉल परिणाम एनएफसी के लिए सामान्यीकृत होते हैं , जो इसे विंडोज और लिनक्स के साथ इनलाइन डालता है, लेकिन ओएस एक्स पर एनएफडी की उम्मीद करने वाले कुछ कार्यक्रमों को तोड़ने की कीमत पर।

लेकिन चूंकि macOS 10.13 + AFPS की शुरुआत के बाद, व्यवहार फिर से बदल जाता है: Apple यह निर्णय लेता है कि प्रदर्शन और सिस्टम कॉल पर NFD को सामान्य करना चाहता है , लेकिन मूल फाइलनाम को छोड़ दें क्योंकि यह है (इसलिए NFC और NFD दोनों समर्थित हैं, लेकिन यदि आप चयन करते हैं फाइंडर में नाम या lsटर्मिनल में कॉपी परिणाम, आपको एनएफडी फॉर्म मिलता है)।

यह सब बहुत अच्छा है, जब तक कि आप एक्सफ़ैट का उपयोग करके बाहरी ड्राइव में एनएफडी फ़ाइल नाम के साथ एक फ़ाइल नहीं डालते हैं (क्योंकि यह 4 जी + फ़ाइल आकार समर्थन के साथ एकमात्र क्रॉस-मैकओएस / विंडोज प्रारूप है): मैकओएस 10.13 किसी भी तरह आपकी फ़ाइल को एनएफसी प्रारूप में होना चाहिए, इसलिए यह खराब हो गया।

वास्तव में, यहां एक त्वरित परीक्षण है, मेरे पास 3 फ़ाइलों के साथ मेरी एक्सफ़ैट ड्राइव पर विंडोज में एक फ़ोल्डर है:

यहाँ छवि विवरण दर्ज करें

  • test.mp3
  • Ēlusion.mp3( Ēएनएफसी में)
  • 03 - Ēlusion( Ēएनएफडी में)

(आप यहां सटीक यूनिकोड कॉपी कर सकते हैं )

जब मैं उन्हें अपने macOS पर बिठाता हूं, तो यही मुझे दिखाई देता है:

यहाँ छवि विवरण दर्ज करें

और ls -laibपरिणाम:

$ ls -laib
total 46592
2762318 drwxrwxrwx  1 user  staff    131072 Jan  3  2017 .
2685260 drwxrwxrwx  1 user  staff    131072 Jan  3  2017 ..
1572961 -rwxrwxrwx  1 user  staff  11672464 Aug 23  2014 Ēlusion.mp3
1572871 -rwxrwxrwx  1 user  staff  11672464 Aug 23  2014 test.mp3

जैसा कि आप देख सकते हैं, एनएफसी फाइल मौजूद है लेकिन एनएफडी फाइल गायब है।

यहां तक ​​कि अगर आप ओएस एक्स पर एनएफसी / एनएफडी समस्या के बारे में जानते हैं , तो आप एक्सफ़ैट बाहरी ड्राइव से इस मुद्दे का विपरीत तरीके से सामना करने की उम्मीद नहीं कर सकते हैं (एनएफसी ठीक है, लेकिन एनएफडी पैंट-ऑन-फायर है)।

लेकिन पहली जगह में NFD फ़ाइल नाम का उपयोग करने के कारण मेरी संगीत फ़ाइल क्या हो सकती है:

  • मैंने मूल रूप से 10.9 / 10.10 को एक पुराने मैक के साथ इस संगीत फ़ाइल को डाउनलोड किया, जो एनएफडी फ़ाइल नाम को लागू करता है।
  • कुछ बिंदु पर मैं उन्हें एक विंडोज + एनटीएफएस ड्राइव पर ले जाता हूं, जो एनएफसी / एनएफडी लागू नहीं करता है, इसलिए मूल एनएफडी फ़ाइल नाम संरक्षित है।
  • अब मैं एक एक्सफ़ैट ड्राइव का उपयोग करके इस फ़ाइल को वापस अपने macOS 10.13 + APFS में ले जाना चाहता हूँ (exFAT NTFS के समान UTF-16 सम्मेलन का समर्थन करता है)।
  • नर्क टूट गया।

मैं फ़ाइल को नेटवर्क ड्राइव या टीम व्यूअर के माध्यम से कॉपी कर सकता था, और यह ठीक होगा, लेकिन exFAT इस बग को macOS पर ट्रिगर कर रहा है।

सबक:

  • यूनिकोड फ़ाइलनाम अभी भी एक खतरा है।
  • आपको वास्तव में इस समस्या को ठीक करने के लिए एक विंडोज / लिनक्स की आवश्यकता है (यदि स्थिति आपकी फ़ाइल एक्सफ़ैट बाह्य ड्राइव पर है)।

@bitlinn: duskwulff को संबोधित मेरी टिप्पणी के दूसरे लिंक पर क्लिक करें और Apfelstrudel यूनिकोड सामान्यीकरण उपकरण का प्रयास करें जो आपको वहां मिलेगा। APFS के लिए बहुत उपयोगी, एक्सफ़ैट के साथ व्यर्थ। या यह है...?
डॉक्टर जी।

1
@DocG। यह मुद्दा पहले से थोड़ा अधिक जटिल है, जैसा कि मैंने शुरू में सोचा था, लेकिन मैंने अपने जवाब को फिर से अपडेट किया है!
बिटिन

हाँ, मुझे लगा कि आप ऐसा कर सकते हैं। Error 36गैर-एचएफएस सिस्टम पर फ़ाइल अटेंशन को अलग करने के बारे में अधिक जानकारी के लिए मेरी पहले की टिप्पणी देखें और "मैक फाइल्स को आगे और पीछे विंडोज़ मैक त्रुटि 36" जैसी वेब खोज करें। सिस्टम 10.6 आने के बाद से यह (अन्य) ज्ञात MacOS / OS X फ़ाइल नामकरण समस्या रही है। यूनिकोड सामान्यीकरण और dot_underscore विशेषता पृथक्करण के बीच, आपने एक डबल बग की एक ऊँचाई का अनुभव किया। मुझे शक है अगर dot_clean कमांड एक मौका था।
डॉक्टर जी।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.