এই অপরিবর্তনযোগ্য ডিরেক্টরিটি কীভাবে মুছবেন?


40

আমি একটি দুর্নীতিগ্রস্ত টার ফাইলটি সনাক্ত করেছি এবং এমন কোনও ডিরেক্টরি যা আমি মুছে ফেলতে পারি না তা শেষ করে পরিচালিত করেছি, যদি আমি এটি মুছে ফেলার চেষ্টা করি তবে মনে হয় এটি পাওয়া যায় না, তবে lsএটি উপস্থিত রয়েছে, বাশ এবং অজগর উভয়ের সাথেই আমি পেয়েছি অনুরূপ আচরণ, ডান এটি মুছে ফেলার চেষ্টা করার পরে rm -rf, lsঅভিযোগ করে এটি এটি খুঁজে পায় না, তবে এটি এটি তালিকাভুক্ত করে (পরে নীচে দেখুন rm -rf)। findকমান্ড শো ফাইল উপস্থিত থাকলে, কিন্তু এখনও আমি এটা মুছে ফেলার একটা উপায় ভাবতে পারি না।
এখানে আমার প্রচেষ্টা:

এখানে আপনি উভয়ই দেখেন lsএবং findসম্মত হন যে আমাদের একটি ডিরেক্টরি আছে,

rl]$ ls
mikeaâ??cnt
rl]$ find -maxdepth 1 -type d -empty -print0  
./mikeaâcnt 

তবে আমি এটি মুছতে পারি না:

rl]$ find -maxdepth 1 -type d -empty -print0 |  xargs -0 rm -f -v 
rm: cannot remove `./mikeaâ\302\201\302\204cnt': Is a directory
rl]$ ls
mikeaâ??cnt

cdযদিও আমি এটি করতে পারি এবং এটি খালি:

rl]$ cd mikeaâ^Á^Äcnt/
mikeaâ^Á^Äcnt]$ ls
mikeaâ^Á^Äcnt]$ pwd
.../rl/mikeaâcnt


mikeaâ^Á^Äcnt]$ cd ../
rl]$ ls
mikeaâ??cnt

নীচে দেখুন এটি একটি সাধারণ ফাইল নয় তবে একটি ডিরেক্টরি নয়, lsপ্লাসটি rm -rf ফাইলটি খুঁজে পাবে না বলে এটি মজাদার আচরণ করে তারপরে সরাসরি এটি তালিকাভুক্ত করে:

rl]$ rm mikeaâ^Á^Äcnt/
rm: cannot remove `mikeaâ\302\201\302\204cnt/': Is a directory
rl]$ rm -rf  mikeaâ^Á^Äcnt/
rl]$ ls
ls: cannot access mikeaâcnt: No such file or directory
mikeaâ??cnt
rl]$ 

সুতরাং অজগর দিয়ে এই চেষ্টা করা হয়েছে, ফাইলটি পাওয়া গেছে, তবে নামটি মুছে ফেলা যায় এমন নাম হিসাবে ব্যবহারযোগ্য নয়:

rl]$ python 
Python 2.6.6 (r266:84292, Jul 10 2013, 22:48:45) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> import shutil
>>> os.listdir('.')
['mikea\xc3\xa2\xc2\x81\xc2\x84cnt']
>>> shutil.rmtree(os.listdir('.')[0] )
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib64/python2.6/shutil.py", line 204, in rmtree
    onerror(os.listdir, path, sys.exc_info())
  File "/usr/lib64/python2.6/shutil.py", line 202, in rmtree
    names = os.listdir(path)
OSError: [Errno 2] No such file or directory: 'mikea\xc3\xa2\xc2\x81\xc2\x84cnt'

এমনকি আমি ট্যাব সমাপ্তিটি যখন ব্যবহার করি তখনও এটি নামটি ব্যবহার করে না:

rl]$ rm -rf mikeaâ^Á^Äcnt 
rl]$ ls
ls: cannot access mikeaâcnt: No such file or directory
mikeaâ??cnt

বাশ দিয়ে অজগর যে নামটি দেখায় তা ব্যবহার করে আমি এটি পেয়েছি:

rl]$ rm -rf "mikea\xc3\xa2\xc2\x81\xc2\x84cnt"
rl]$ ls
ls: cannot access mikeaâcnt: No such file or directory
mikeaâ??cnt

এই দুর্নীতিবাজ দির থেকে মুক্তি পেতে আমি কি কিছু করতে পারি? অন্তর্নিহিত ফাইল সিস্টেম (এনএফএস) কার্যকরী বলে মনে হচ্ছে এবং অন্য কোনও সমস্যা প্রতিবেদন করা হয়নি, এবং দুর্নীতিগ্রস্ত টার ফাইল না হওয়া পর্যন্ত আমার এ জাতীয় কোনও সমস্যা হয়নি।

সম্পাদনা: এখানে কল করার findনিজস্ব -execবিকল্প ব্যবহার করা হচ্ছেrm

rl]$ find -maxdepth 1 -type d -empty -exec rm -f {} \;
find: `./mikeaâ\302\201\302\204cnt': No such file or directory
rl]$ ls
ls: cannot access mikeaâcnt: No such file or directory
mikeaâ??cnt
rl]$

তবে ফাইলটি এখনও রয়েছে, ( lsএটি এটি খুঁজে পায় না বলে অভিযোগ করে তবে এটি যেকোনভাবে প্রদর্শন করে)

২ য় সম্পাদনা:

rl]$ find -maxdepth 1 -type d -empty -exec rm -rf {} \;
find: `./mikeaâ\302\201\302\204cnt': No such file or directory
rl]$ ls
ls: cannot access mikeaâcnt: No such file or directory
mikeaâ??cnt

আচরণটি এখনও অপরিবর্তিত, ফাইলটি এখনও উপস্থিত রয়েছে

তৃতীয় সম্পাদনা:

rl]$ ls
mikeaâ??cnt
rl]$ find -maxdepth 1 -type d -empty -exec rm -rf {} + 
rl]$ ls
ls: cannot access mikeaâcnt: No such file or directory
mikeaâ??cnt

mikeaâcntপাইথনের প্রচেষ্টার ফলাফল mikea\xc3\xa2\xc2\x81\xc2\x84cntএবং এই স্ক্রিনশটটি দেখার চেয়ে নামটির থেকে আরও বেশি কিছু রয়েছে বলে মনে হয় :

ls আউটপুট

চতুর্থ সম্পাদনা: ওয়াইল্ড কার্ডের সাহায্যে এটি চেষ্টা করা হচ্ছে:

rl]$ echo * 
mikeaâcnt
rl]$ echo mike* 
mikeaâcnt
rl]$ rm -rf mike*
rl]$ ls
ls: cannot access mikeaâcnt: No such file or directory
mikeaâ??cnt

এবং আমার স্থানীয়:

rl]$  locale
LANG=en_US.utf8
LC_CTYPE="en_US.utf8"
LC_NUMERIC="en_US.utf8"
LC_TIME="en_US.utf8"
LC_COLLATE="en_US.utf8"
LC_MONETARY="en_US.utf8"
LC_MESSAGES="en_US.utf8"
LC_PAPER="en_US.utf8"
LC_NAME="en_US.utf8"
LC_ADDRESS="en_US.utf8"
LC_TELEPHONE="en_US.utf8"
LC_MEASUREMENT="en_US.utf8"
LC_IDENTIFICATION="en_US.utf8"
LC_ALL=

5 ম সম্পাদনা:

rl]$ ls -i 
ls: cannot access mikeaâcnt: No such file or directory
? mikeaâ??cnt

তবে আচরণটি এখন পরিবর্তিত হয়েছে lsএবং এখন cd এটি করুন:

rl]$ ls
ls: cannot access mikeaâcnt: No such file or directory
mikeaâ??cnt
rl]$ cd mikeaâ^Á^Äcnt 
mikeaâcnt: No such file or directory.

মোছার চেষ্টার পরে এটি ঘটেছে, আমি ভাবছি যে এটি এনএফএস সমস্যা হতে পারে এখানে ভিনক 17 এর উত্তরগুলির মধ্যে একটিতে প্রস্তাবিত হিসাবে ।

6 ষ্ঠ সম্পাদনা করুন: এই আউটপুট হয় lsofএবংls -a

rl] $ / usr / sbin / lsof mikeaâ ^ Á ^ ntcnt lsof: মাইকেএল স্ট্যাটাস ত্রুটি \ xc2 \ x81 \ xc2 \ x84cnt: এ জাতীয় কোনও ফাইল বা ডিরেক্টরি নেই

lsofউপরেরটি ভুল, এখানে সঠিক প্রার্থনা: (আরএলটি মূল ডিরেক্টরি)

rl]$ /usr/sbin/lsof | grep mike | grep rl 
tcsh      11926   mike  cwd       DIR   0,33     4096 19569249 /home/mike/mish/rl
lsof      14733   mike  cwd       DIR   0,33     4096 19569249 /home/mike/mish/rl
grep      14734   mike  cwd       DIR   0,33     4096 19569249 /home/mike/mish/rl
grep      14735   mike  cwd       DIR   0,33     4096 19569249 /home/mike/mish/rl
lsof      14736   mike  cwd       DIR   0,33     4096 19569249 /home/mike/mish/rl
rl]$ 

rl]$ ls -a
ls: cannot access mikeaâcnt: No such file or directory
.  ..  mikeaâ??cnt

7 তম সম্পাদনা: সরানো কাজ করবে না, (আমি এটির আগে চেষ্টা করেছিলাম, কিন্তু আউটপুটটি সংরক্ষণ করি নি) তবে ফাইলটির সাথে lsএবং সমস্যাটি একই রকম rm

অষ্টম সম্পাদনা: এটি হেক্সস চরগুলি হিসাবে পরামর্শ মতো ব্যবহার করছে:

 rl]$ ls --show-control-chars | xxd
0000000: 6d69 6b65 61c3 a2c2 81c2 8463 6e74 0a    mikea......cnt.
rl]$ rmdir $'mikea\6d69\6b65\61c3\a2c2\81c2\8463\6e74\0acnt' 
rmdir: failed to remove `mikea\006d69\006b651c3\a2c2\\81c2\\8463\006e74': No such file or directory
rl]$ ls
ls: cannot access mikeaâcnt: No such file or directory
mikeaâ??cnt
rl]$

নবম সম্পাদনা: statআদেশের জন্য:

 rl]$ stat  mikeaâ^Á^Äcnt 
stat: cannot stat `mikeaâ\302\201\302\204cnt': No such file or directory
 rl]$

এটি সমস্ত আউটপুট থেকে আরও বেশি সম্ভাবনাময় বলে মনে হয়, মন্তব্যে প্রস্তাবিত একটি বাগ বা অন্যান্য এনএফএসের খারাপ আচরণ রয়েছে।

10 সম্পাদনা করুন: এটি এতটা বড়, আউটপুট বা এই দুটি কমান্ডের পর থেকে একটি টুকরোটিতে স্ট্রেস আউটপুট:

strace -xx rmdir ./* | grep -e '-1 E'`
strace -xx -e trace=file ls -li`

https://gist.github.com/mikeatm/e07fa600747a4285e460

11 সম্পাদনা করুন: সুতরাং উপরের আগে rmdirআমি লক্ষ্য করেছি যে আমি cdডিরেক্টরিতে প্রবেশ করতে পারি , তবে rmdirআমি আর পারিনি cd, গতকালের মতো similar .এবং .. ফাইল উপস্থিত ছিলেন:

rl]$ ls
mikeaâ??cnt
rl]$ cd mikeaâ^Á^Äcnt/
mikeaâ^Á^Äcnt]$ ls
mikeaâ^Á^Äcnt]$ ls  -a
.  ..
mikeaâ^Á^Äcnt]$ cd ../

চূড়ান্ত সম্পাদনা: আমি এটির উপরে একটি স্থানীয় প্রশাসককে দেখেছি এবং এটি সার্ভারে নিজেই লগ ইন করে সেখান থেকে মুছে ফেলার সাথে মোকাবিলা করা হয়েছিল। তাদের কাছ থেকে ব্যাখ্যাটি হ'ল এটি অক্ষরে অক্ষর অনুসারে অক্ষর সেটগুলির সাথে সমস্যা হতে পারে।


আপনি findকেবলমাত্র এটির execবিকল্পটি ব্যবহার না করে কোনও আলাদা কমান্ডের আউটপুটটি পাইপ করার কোনও কারণ আছে ?
HalosGhost

@ হ্যালসগোস্টের কোনও কারণ ছিল না, আপনার প্রশ্নে যুক্ত তথ্যের জন্য সম্পাদনা দেখুন
মাইক-এম

2
ইউনিক্স এবং লিনাক্সের সাথে খুব অল্প অভিজ্ঞতার সাথে, আমার ধারণাটি এখানে: চিহ্নগুলি ব্যবহার না করে ডিরেক্টরিটির নামকরণ করার চেষ্টা করুন mv। সম্ভবত আপনি এটি পরে মুছে ফেলতে পারেন। বিকল্পভাবে, আপনি ডিরেক্টরিটিকে আরও গভীর ফোল্ডার স্তরে (সম্ভবত একটি ওয়াইল্ডকার্ড সহ) নিয়ে যাওয়ার চেষ্টা করতে পারেন এবং তারপরে আপনি যে ফোল্ডারে সরিয়ে নিয়েছেন সেটি মুছে ফেলার চেষ্টা করতে পারেন।
Nzall

4
আমার সন্দেহ হয় যে ডিরেক্টরিটি কেবল ক্লায়েন্টের মেমরিতে রয়েছে এবং এটি সার্ভারে দীর্ঘকাল চলে গেছে। আপনি কি এটিকে চূড়ান্ত করে আবার মাউন্ট করার চেষ্টা করেছেন? আপনি কি ক্লায়েন্টকে রিবুট করার চেষ্টা করেছেন? এটি অন্যান্য ক্লায়েন্টদের উপর দৃশ্যমান?
ক্যাস্পারড

6
@ মাইক-মি মনে হচ্ছে আপনি কোনও এনএফএস বাগ আঘাত করেছেন, সম্ভবত এনএফএস সার্ভারে। হয় বা সার্ভারে ফাইল সিস্টেমের দুর্নীতি। আমি সন্দেহ করি যে আপনি এটি মোকাবেলা করার জন্য এনএফএস সার্ভার অ্যাডমিন (গুলি) এর অপেক্ষা ছাড়া সত্যই অন্য কিছু করতে পারেন।
ডারোবার্ট

উত্তর:


11

এই রচনাটি থেকে নীচের অংশগুলি সম্ভাব্যভাবে ব্যাখ্যা করে যে কেন ডিরেক্টরিটি মুছে ফেলা অস্বীকার করে:

এনএফএসভি 4 এর জন্য ইউটিএফ -8 ব্যবহার করে সমস্ত ফাইলের নাম তারের মাধ্যমে বিনিময় করা দরকার। এনএফএসভি 4 স্পেসিফিকেশন, আরএফসি 3530 বলছে যে ফাইলের নামগুলি 1.4.3 বিভাগে ইউটিএফ -8 এনকোড করা উচিত: "সামান্য প্রস্থানে, আন্তর্জাতিকীকরণের মূল বিষয়গুলি মোকাবেলা করার জন্য ফাইল এবং ডিরেক্টরি নামগুলি ইউটিএফ -8 এর সাথে এনকোড করা হয়।" একই পাঠ্য নতুন এনএফএস 4.1 আরএফসি (আরএফসি 5661) বিভাগ 1.7.3 এও পাওয়া যায়। বর্তমান লিনাক্স এনএফএস ক্লায়েন্ট ইউটিএফ -8 থেকে এবং বর্তমান লোকাল থেকে কোনও রূপান্তর ছাড়াই সরাসরি ফাইলের নামগুলি সোজা হয়ে যায়। রিমোট এনএফএসভি 4 সিস্টেম ব্যবহার করে সিস্টেমে ইউটিএফ -8 ফাইল নাম ব্যবহার করা একটি আসল সমস্যা হতে পারে; এনএফএসের নির্দিষ্টকরণ অনুসরণ করে এমন কোনও এনএফএস সার্ভার নন-ইউটিএফ -8 ফাইলের নাম প্রত্যাখ্যান করার কথা। সুতরাং আপনি যদি নিশ্চিত করতে চান যে আপনার ফাইলগুলি একটি লিনাক্স ক্লায়েন্ট থেকে কোনও এনএফএস সার্ভারে সংরক্ষণ করা যেতে পারে তবে আপনাকে বর্তমানে ইউটিএফ -8 ফাইলের নাম ব্যবহার করতে হবে। অন্য কথায়,

ইউটিএফ -8 একটি দীর্ঘমেয়াদী পদ্ধতির। সিস্টেমগুলিকে ইউটিএফ -8 পাশাপাশি বহু পুরানো এনকোডিংগুলি সমর্থন করতে হবে, যা লোকদের ইউটিএফ -8 এ স্যুইচ করার সময় দেয়। "সর্বত্র ইউটিএফ -8" ব্যবহার করতে, ইউটিএফ -8 সমর্থন করার জন্য সমস্ত সরঞ্জাম আপডেট করতে হবে। বছর আগে, এটি একটি বড় সমস্যা ছিল, তবে ২০১১ সালের হিসাবে এটি মূলত একটি সমাধান করা সমস্যা এবং আমি মনে করি যে এই কয়েকটি অনুসরণীয় সিস্টেমের জন্য পথটি খুব স্পষ্ট।

সমস্ত বাইট সিকোয়েন্স আইনী ইউটিএফ -8 নয় এবং এগুলি কীভাবে প্রদর্শন করতে হয় তা নির্ধারণ করার জন্য আপনার কোনও প্রয়োজন নেই। কার্নেল যদি এই বিধিনিষেধগুলি প্রয়োগ করে, কেবলমাত্র ইউটিএফ -8 ফাইলের নাম অনুমোদিত রয়েছে তা নিশ্চিত করে, তবে কোনও সমস্যা নেই ... সমস্ত ফাইলের নাম বৈধ ইউটিএফ -8 হবে। মার্কাস কুহনের utf8_check সি ক্রিয়াকলাপটি সিকোয়েন্সটি বৈধ ইউটিএফ -8 কার্যকর কিনা তা দ্রুত নির্ধারণ করতে পারে।

ফাইল সিস্টেমে প্রয়োজনীয় হওয়া উচিত যে ফাইলের নামগুলি কিছু মান পূরণ করতে পারে, মানুষকে নিয়ন্ত্রণ করার কিছু খারাপ প্রয়োজনের কারণে নয়, কেবল যাতে পরবর্তী সময়ে নামগুলি সর্বদা সঠিকভাবে প্রদর্শিত হতে পারে। মানের অভাব ব্যবহারকারীদের জন্য জিনিসকে আরও শক্ত করে তোলে, সহজ নয়। তবুও ফাইল-সিস্টেম ফাইলনামগুলিকে ইউটিএফ -8 হতে বাধ্য করে না, তাই এতে সহজেই আবর্জনা থাকতে পারে।


এটি স্থানীয় প্রশাসকদের থেকে ব্যাখ্যা প্রতিধ্বনিত বলে মনে হচ্ছে, আমি এডমিনদের ব্যাখ্যা দ্বারা উত্তর হিসাবে চিহ্নিত করব। আমার চূড়ান্ত সম্পাদনাটি দেখুন
মাইক-এম

19

এই জাতীয় ফাইল / নির্দেশ মোছার একটি উপায় হ'ল তাদের ইনোড-রেফারেন্স।

বর্তমান দির উপাদানগুলির জন্য আইনেরগুলি সন্ধান করতে:

ls -i
14813568 mikeaâcnt

এটি মুছতে:

find . -inum 14813568 -delete

5 ম সম্পাদনা দেখুন।
মাইক-এম

4
না, এটি তাদের ইনোড দ্বারা ফাইলগুলি মুছবে না। এটি প্রদত্ত ইনোডের জন্য একটি ফাইলের নাম সন্ধান করে এবং তারপরে ফাইলটি মুছে দেয়। এটি এখানে সহায়তা করতে পারে না, কারণ ইতিমধ্যে সঠিক নামের (একটি ভুল নাম সহ অন্যান্য প্রচেষ্টার পাশাপাশি) চেষ্টা করা হয়েছিল।
গিলস 23'18

@ গিলস - প্রযুক্তিগতভাবে, এটি একটি ইনোড ডেন্ট্রি সন্ধান করে এবং একটি ফাইলের নাম দেয় তবে আমি সম্মত।
মাইকসার্ভ

1
@ নিকোলাই আমার পক্ষে সাহায্য করছেন না ডিরেক্টরি খালি বার্তা আসে না।
ডিফ্র্যাক্টড

1
হ্যাঁ, হাহ, এটি সম্পর্কে মজার গল্প: আমি যে ফাইলটি মুছতে চাইছি তাতে ?এর ইনোড উল্লেখ রয়েছে। আপনি কীভাবে এটি মুছবেন?
নিক হার্টলি

7

কমান্ড লাইনে আপনার অ-ASCII অক্ষর ব্যবহার করা উচিত নয় যেহেতু আপনি দেখতে পেয়েছেন যে কোনও কারণে, তারা প্রয়োজনীয়ভাবে ফাইলের সাথে মিল রাখে না (ইউনিকোডের উচ্চারণযুক্ত অক্ষর প্রকাশের বিভিন্ন উপায় রয়েছে)। কিছুটা এইরকম:

rm -rf mike*

ফাইলের নামটি শেল দ্বারা সরাসরি উত্পাদিত হওয়ার পরে কাজ করা উচিত। তবে নিশ্চিত করুন যে কেবলমাত্র একটি ম্যাচ আছে ( echo mike*নিশ্চিত করার জন্য প্রথমে চেষ্টা করুন)।

ঠিক আছে, যদি cdকাজ করে তবে তার কারণ rmবা lsবলার কোনও কারণ নেই No such file or directory, যাতে সমস্যাটি ফাইল সিস্টেমের স্তরে হতে পারে।

দ্রষ্টব্য: lsডিরেক্টরিটি ফাঁকা আছে কিনা তা অনুসন্ধান করতে ব্যবহার করবেন না তবে ls -a

ডিরেক্টরিটি এখনও অন্য প্রক্রিয়া দ্বারা ব্যবহার করা যেতে পারে (এটি যদি কোনও প্রক্রিয়ার cwd হয় তবে তা অন্তর্ভুক্ত)। আইএমএইচও, সে কারণেই এটি এখনও "বিদ্যমান" তবে ত্রুটিগুলি উত্পন্ন করতে পারে, উদাহরণস্বরূপ ls; lsofআপনাকে কিছু তথ্য দিতে পারে তবে এনএফএসের সাহায্যে আপনাকে কোন মেশিনটি এটি ব্যবহার করছে তা খুঁজে বের করতে হবে। বিশেষত এনএফএসের সাথে এটি অদ্ভুত ত্রুটি পেতে পারে। ls -aমূল ডিরেক্টরিতে .nfs*কিছু ক্ষেত্রে আপনাকে ফাইল / ডিরেক্টরি দেখায় ।

যখন তুমি পাবে:

$ ls
ls: cannot access mikeaâcnt: No such file or directory
mikeaâ??cnt

আমি সন্দেহ করি যে ফাইলটি এখনও এনএফএস ক্যাশে করার কারণে এবং / বা কারণ এটি অন্য কোনও প্রক্রিয়া দ্বারা ব্যবহৃত হয়, তবে সম্পর্কিত তথ্য ছাড়াই ডিরেক্টরি টেবিলটিতে বিদ্যমান । যখন lsফাইলটিতে নিজেই তথ্য পাওয়ার চেষ্টা করা হয় তখন এটি একটি ত্রুটি পায় কারণ ফাইলটি আর উপস্থিত নেই (এটি কেবল ডিরেক্টরি টেবিলে থাকে), সুতরাং প্রদর্শিত ত্রুটি। তারপরে lsফাইলের নাম আউটপুট করে কারণ এটি ডিরেক্টরি সারণীতে রয়েছে। আপনার এক ক্ষেত্রে প্রশ্ন চিহ্ন রয়েছে তবে অন্য ক্ষেত্রে lsনয় , আইএমএইচও-র ডিসপ্লে বাগের কারণে (আপনার সমস্যার সাথে সম্পর্কিত নয়))


আমি এর আগে একটি ওয়াইল্ডকার্ড চেষ্টা করেছি, এটি কার্যকর হয়নি এবং আমি আমার প্রশ্নে এই প্রচেষ্টাটি পোস্ট করতে ব্যর্থ হয়েছি, ফলাফলটি দিয়ে আমি আপডেট করব
মাইক-এম

আমার তৃতীয় সম্পাদনা দেখুন। আইএমএইচএও এটি এনএফএসের কারণে (সম্ভবত দুর্নীতি নয়, তবে খারাপ ক্যাচিং) এবং সম্ভবত যে অন্য কোনও প্রক্রিয়া ডিরেক্টরিটি ব্যবহার করছে। কিছু ক্ষেত্রে, একজনকে সমস্ত কিছু (সার্ভার এবং ক্লায়েন্ট) রিবুট করতে হবে।
ভিঙ্ক 17

হতে পারে এটি বিষয়গুলি ব্যাখ্যা করতে পারে তবে আমি নিশ্চিত হতে পারি না যেহেতু আমার কাছে এটি পরীক্ষার জন্য নেওয়ার জন্য ব্যক্তিগতকৃত অধিকার নেই। 5 ম সম্পাদনা দেখুন।
মাইক-এম

1
@ ভিনক ১ Please দয়া করে আপনার উত্তরে "সম্পাদনা" ব্যবহার করবেন না, কারণ নতুন পাঠকের পক্ষে বোধ হয় না (ইতিমধ্যে একটি সম্পাদনার ইতিহাস রয়েছে)
বার্নহার্ড

iv কিছু lsof আউটপুট যুক্ত করেছে, এটি আপনাকে কিছু বলতে পারে কিনা তা নিশ্চিত নয়,
মাইক-এম

3

আমি ব্যক্তিগতভাবে ব্যবহার পরীক্ষা আছে find'র -execনির্দেশ:

$ mkdir -p mikeaâcnt
$ ls
mikeaâcnt
$ find -maxdepth 1 -type d -empty -exec rm -rf {} +
$ ls
$ 

ফোল্ডারটি সঠিকভাবে তৈরি এবং সঠিকভাবে সরানো হয়েছিল।

@ ইজর্জেটের দ্বারা নির্দেশিত হিসাবে , আপনার জিএনইউ থাকলে একটি আরও সহজ পদ্ধতি রয়েছে find:

$ find -maxdepth 1 -type d -empty -delete

আমি এই আদেশটিও পরীক্ষা করেছি এবং এটি সঠিকভাবে কাজ করে functions


এবং আপনি যদি জিএনইউ এর সন্ধান ব্যবহার করেন তবে একটি -deleteবিকল্পও আছে ।
দীর্ঘতম দিন

দয়া করে তৃতীয় সম্পাদনা দেখুন
মাইক-এম

1

আমারও একই সমস্যা হয়েছে, আমি বিশ্বাস করি। এর ফাইল ফাইল দিয়ে সমস্যাটি আগে দেখেছি lsএই ক্ষেত্রে ফাইলটি প্রদর্শিত হয়েছিল â??, তবে আমি এটি দিয়ে মুছতে সক্ষম হয়েছি rm ☃

এটি আমাকে ভুল নামটিকে সঠিক নামটিতে রূপান্তর করার জন্য নিম্নলিখিত পদ্ধতিতে নিয়ে গেছে:

প্রথমে ফাইলের নামের বাইটগুলি পান:

$ ls --show-control-chars | xxd
0000000: 6d69 6b65 61c3 a2c2 81c2 8463 6e74 0a    mikea......cnt.

তারপরে এই ওয়েবসাইটটির হেক্সাডেসিমেল ইনপুট ব্যবহার করে ইউনিকোড কোডপয়েন্টগুলি পেতে ইউটিএফ -8 হিসাবে এই বাইটগুলি ডিকোড করুন: http://software.hixie.ch/utilities/cgi/unicode-decoder/utf8-decoder

U+006D LATIN SMALL LETTER M character
U+0069 LATIN SMALL LETTER I character
U+006B LATIN SMALL LETTER K character
U+0065 LATIN SMALL LETTER E character
U+0061 LATIN SMALL LETTER A character
U+00E2 LATIN SMALL LETTER A WITH CIRCUMFLEX character (&#x00E2;)
U+0081 <control> character (&#x0081;)
U+0084 <control> character (&#x0084;)
U+0063 LATIN SMALL LETTER C character
U+006E LATIN SMALL LETTER N character
U+0074 LATIN SMALL LETTER T character

লক্ষ্য করুন যে এগুলি সমস্ত বাইট সীমানার নীচে। আমরা নিম্নলিখিত বাইট প্রাপ্ত:

6D 69 6B 65 61 E2 81 84 63 6E 74

আমরা যদি ইউটিএফ -8 এ এই ক্রমটি চিকিত্সা করি তবে আমরা পাই:

U+006D LATIN SMALL LETTER M character
U+0069 LATIN SMALL LETTER I character
U+006B LATIN SMALL LETTER K character
U+0065 LATIN SMALL LETTER E character
U+0061 LATIN SMALL LETTER A character
U+2044 FRACTION SLASH character (&#x2044;)
U+0063 LATIN SMALL LETTER C character
U+006E LATIN SMALL LETTER N character
U+0074 LATIN SMALL LETTER T character

এবং এইভাবে আপনার ফাইলের নামটি হ'ল: mikea⁄cntসাধারণ ফরোয়ার্ডের পরিবর্তে ভগ্নাংশ স্ল্যাশ সহ। আপনি এখন এই নামটি পাস করতে পারেন rmdir


জ্ঞানবান, আমি যদি আবার এটির সাথে দেখা করি তবে এটি মনে রাখবেন। ভাল একটা. +1
মাইক-এম

0

ফাইল / ফোল্ডারের নামের সঠিক হেক্স কোড পাওয়ার পরে (যে কোনও পদ্ধতি উপযুক্ত মনে হয় তা ব্যবহার করে, আমি বেছে নিতে পারি ls --show-control-chars | xxd), বাশের অধীনে চলার সময় এই জাতীয় অক্ষরগুলিকে সম্বোধন করার জন্য কিছু বিশেষ কনস্ট্রাক্ট ব্যবহার করা উচিত:

rmdir $'mikea\xc3\xa2\xc2\x81\xc2\x84cnt'

অন্যথায় ব্যাকস্ল্যাশগুলি ভ্যানিলা ব্যাকস্ল্যাশ হিসাবে বিবেচিত হয়।


দয়া করে আমার সম্পাদনাটি দেখুন (8 ম সম্পাদনা)
মাইক-এম

@ মাইক-এম অবশ্যই এটি বিদ্যমান নেই, কারণ lsআউটপুট ডেটাতে নতুন লাইন অন্তর্ভুক্ত রয়েছে এবং "সিএনটি" নকল করা আছে is সম্ভবত আপনি আমার উত্তরটিতে লাইনটি অনুলিপি করে সরাসরি কপি করতে এবং এটি কার্যকর কিনা তা দেখতে পারেন?
আবেল চেউং 16

না, এখনও এটি: `` `rl] $ rmdir $ 'mikea \ xc3 \ xa2 \ xc2 \ x81 \ xc2 \ x84cnt' rmdir: remove mikeaâ remove 302 \ 201 \ 302 \ 204cnt 'অপসারণ করতে ব্যর্থ হয়েছে: এ জাতীয় ফাইল বা ডিরেক্টরি নেই `` `
মাইক-এম

সেক্ষেত্রে এটি সম্ভবত এনএফএস সমস্যা এবং লোকেলগুলি বেশিরভাগ সিস্টেমের ইউটিলিটিগুলিকে ভুল নন-ইউটিএফ 8 বাইটগুলি পাস করতে প্রতিরোধ করে of এবং দেখে মনে হচ্ছে ইনোড অপসারণ পরিস্থিতি আরও খারাপ করেছে। এখনকার জন্য, একমাত্র উপায় আমি মনে করতে পারেন (ব্যবহারের "সি" এর জন্য লোকেল একটি স্থানীয়ের মুক্ত পরিবেশ আপনার সিস্টেম সেটিং LC_*এবং LANGenv ভেরিয়েবল), এবং কোন অক্ষর সেট অপশন ছাড়া NFS মাউন্ট
আবেল Cheung

0

আপনি ব্যবহার চেষ্টা rm -rf ./mikeaâcntবা rm -rf "./mikeaâcnt"বা একটি সুনির্দিষ্ট পাথ? পরিবর্তে rm, চেষ্টা করুন rmdir ./mikeaâcnt


সমস্যার অংশটি হ'ল চরিত্রগুলি mikeaâcntফাইলের নাম বলে মনে হচ্ছে না তবে কী ls প্রদর্শিত হবে, তৃতীয় সম্পাদনা দেখুন
মাইক-এম

0

আপনি কি এই ফাইলটির ইনোডটি এর সাথে পাওয়ার চেষ্টা করেছেন stat:

stat mike*

এটি আপনাকে ইনোড নম্বর (এবং অন্যান্য ডেটা) দেয় এবং তারপরে আপনি এটি মুছতে চেষ্টা করতে পারেন।


IV statআচরণের সাথে একটি সম্পাদনা যুক্ত করেছে
মাইক-এম

0

আমি একই সমস্যা ছিল। আপনার কি জিনোম, কেডিএ বা কোনও ধরণের এক্সওয়াইন্ডো ডিএম আছে? আপনি যদি নিজের ফাইল ব্রোজারটি খুলেন এবং সেখান থেকে ফাইলটি সরিয়ে ফেলেন।

এটি কাজ করা উচিত.

আমি কমান্ড লাইন থেকে একটি সমাধান দেখতে চাই, তবে আমার ক্ষেত্রে এবং কমান্ড লাইন থেকে কীভাবে এটি অপসারণ করা যায় তা নির্ধারণ করার চেষ্টা করার পরে অনেক সময় হারানোর পরে আমি দেখতে পেলাম যে এটি নটিলাস থেকে অন্য কোনও ফাইল সরানোর মতোই সহজ বা অন্য কোনও ফাইল এক্সপ্লোরার (সত্য আমি কেবল নটিলাস দিয়ে চেষ্টা করেছি)।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.