'ls' एक निर्देशिका में दो समान फाइलें दिखा रहा है


14

तो किसी तरह कमांड lsमुझे एक निर्देशिका में दो समान फाइलें दिखा रहा है।

$ ls -Blah /System/Library/LaunchDaemons
total 32                                                              
drwxr-xr-x  266 root  wheel   8.8K Jun 18 10:41 .
drwxr-xr-x   79 root  wheel   2.6K Mar 31 12:28 ..
[redacted]
-rw-r--r--    1 root  wheel   715B Jun 18 10:36 tftp.plist
-rw-r--r--    1 root  wheel   715B Jun 18 10:35 tftp.plist

मैं फ़ाइलों में से एक का नाम बदल सकता हूं, उनका नाम बदल सकता हूं, लेकिन दूसरा वहां भी नहीं लगता है। bashटैब पूरा होने पर भी समान फ़ाइलें दिखाई देती हैं।

उदाहरण के लिए, निम्नलिखित में प्रवेश करना और फिर मारना TAB

$ sudo mv /System/Library/LaunchDaemons/tftp
tftp.plist   tftp.plist

अगर मैं फ़ाइल का नाम बदलूँ:

$ sudo mv /System/Library/LaunchDaemons/tftp.plist /System/Library/LaunchDaemons/tftp.plist.derp

टैब पूर्णता अभी भी फ़ाइल दिखाता है:

$ ls -Blah /System/Library/LaunchDaemons/tf
tftp.plist       tftp.plist.derp 

लेकिन मूल, अनमॉडिफाइड फ़ाइल 'ls' में नहीं दिखाई देती है

$ ls -Blah /System/Library/LaunchDaemons/tftp.plist
ls: /System/Library/LaunchDaemons/tftp.plist: No such file or directory

हालाँकि अगर मैं ऊपर पहले स्निपेट के रूप में फाइलों को सूचीबद्ध करता हूं, तो निहारना:

$ ls -Blah /System/Library/LaunchDaemons
total 32                                                              
drwxr-xr-x  266 root  wheel   8.8K Jun 18 10:41 .
drwxr-xr-x   79 root  wheel   2.6K Mar 31 12:28 ..
[redacted]
-rw-r--r--    1 root  wheel   715B Jun 18 10:35 tftp.plist
-rw-r--r--    1 root  wheel   715B Jun 18 10:36 tftp.plist.derp

किसी भी विचार यहाँ क्या हो रहा है और मैं इस भूत फ़ाइल से कैसे छुटकारा पा सकता हूं?

यह एक मैक ओएस एक्स चल रहा है अगर वह समस्या में कोई जानकारी जोड़ता है। मैं sedइस फाइल को पागलपन शुरू होने से ठीक पहले इस्तेमाल कर रहा था ।

संपादित करें

मैंने स्पष्ट आउटपुट में कोई बदलाव नहीं करने के साथ दोनों blahऔर Blah lsझंडे का उपयोग किया है ।

संपादित करें २

टिप्पणियों में मांगी गई अतिरिक्त जानकारी:

$ echo tftp* | xxd
0000000: 7466 7470 2e70 6c69 7374 2020 7466 7470  tftp.plist  tftp
0000010: 2e70 6c69 7374 2e64 6572 700a            .plist.derp.

अधिक:

$ printf '<%q>\n' tftp*
<tftp.plist\ >
<tftp.plist.derp>

और भी अधिक:

$ locale                                                                                                                      │-rw-r--r--    1 root  wheel   495B Sep  9  2014 org.net-snmp.snmpd.plist
LANG="en_US.UTF-8"                                                                                                            │-rw-r--r--    1 root  wheel   498B Jan 15 23:15 org.ntp.ntpd.plist
LC_COLLATE="en_US.UTF-8"                                                                                                      │-rw-r--r--    1 root  wheel   1.0K Nov 13  2014 org.openldap.slapd.plist
LC_CTYPE="en_US.UTF-8"                                                                                                        │-rw-r--r--    1 root  wheel   572B Sep  9  2014 org.postfix.master.plist
LC_MESSAGES="en_US.UTF-8"                                                                                                     │-rw-r--r--    1 root  wheel   238B Sep  9  2014 shell.plist
LC_MONETARY="en_US.UTF-8"                                                                                                     │-rw-r--r--    1 root  wheel   941B Sep  9  2014 ssh.plist
LC_NUMERIC="en_US.UTF-8"                                                                                                      │-rw-r--r--    1 root  wheel   260B Sep  9  2014 telnet.plist
LC_TIME="en_US.UTF-8"                                                                                                         │-rw-r--r--    1 root  wheel   715B Jun 18 10:36 tftp.plist
LC_ALL="en_US.UTF-8"

ध्यान दें

नीचे दिए गए उत्तर ने मुझे यह देखने में मदद की कि नाम में एक अनुगामी स्थान था।


6
क्या ऐसा हो सकता है कि आपके पास नाम में एक अनुगामी स्थान हो?
फ्रेडटेंटिनी

हममम ... नहीं, पूरा करेंगे ls test\ ... यदि आप उपयोग करते हैं तो क्या होगा ls "*tftp.list*"? या के lsसाथ उपयोग --show-control-chars?
फर्दांतिनी

1
क्या आप कुछ echo tftp* | xxdया कुछ अन्य हेक्सडंप की तरह चला सकते हैं ?
चेरोबा

2
का आउटपुट क्या है printf '<%q>\n' tftp*?
क्रिस डाउन

3
चूँकि आपका लोकेल है en_US.UTF-8, ls -bकिसी विशेष तरीके से फ़ाइलनाम में रिक्त नहीं दिखाएगा, चाहे वह मध्य में या फ़ाइल नाम के अंत में हो। आप एक उत्तर का उपयोग कर सकते हैं (प्रिंटफ, इको), या एलएस के आउटपुट को एक प्रोग्राम के साथ फिल्टर कर सकते हैं, जिसे ट्रेलिंग ls -1 tftp* | cat -vet
ब्लैंक

जवाबों:


22

आपके पास या तो व्हाट्सएप या एक भ्रष्ट फाइल सिस्टम है।

प्रयत्न

for i in tftp.plist*
do
    echo "'$i'"
done

जो कुछ इस तरह उत्पादन करना चाहिए

'tftp.plist'
'tftp.plist '

उद्धरण और अतिरिक्त स्थान पर ध्यान दें। यदि यह दो बार एक ही चीज़ का आउटपुट देता है, तो आपके पास एक भ्रष्ट फ़ाइल सिस्टम होने की संभावना है।

प्रयत्न

ls -i tftp.plist*

यह आपको फाइल के इनकोड नंबर देगा। यदि वे समान हैं, तो आपकी निर्देशिका में दो बार एक ही फ़ाइल है। यह वास्तव में खराब (tm) होगा, और आपको fsck asap चलाना चाहिए। लेकिन मुझे संदेह है कि यह समस्या है; यह अधिक संभावना है कि व्हॉट्सएप चीज।


किसी भी विचार क्यों अनुगामी व्हाट्सएप 'ls` के साथ bया Bझंडे का उपयोग नहीं दिखा रहा था ?
111 ---

@datUser: इससे -Bकोई लेना-देना नहीं है, और आप इसका उदाहरण नहीं दिखाते हैं ls -b। हालाँकि, आपके साथ -blahनिश्चित रूप से tftp.plist \
स्टीव जेसप

हाँ मैं दोनों का उपयोग कर रहा था bऔर Bऔर न बच गए स्थान या पठनीय प्रारूप में गैर मुद्रण चरित्र का मूल्य दिखा। बहुत विषम IMHO।
111 ---

1
आप lsकिसी फ़ाइल के आउटपुट को रीडायरेक्ट कर सकते हैं , और इसे lessएक टेक्स्ट एडिटर के साथ देख सकते हैं ...
Laszlo Valko

1
अभी भी सोच रहे लोगों के लिए, हेक्सडंप खुलासा करता है कि नाम "tftp.plist" (यानी, अनुगामी स्थान) है।
जोशुआ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.