লিনাক্সে একটি দূষিত ফাইল মুছুন


5

আমি কিভাবে এই ফাইল মুছে ফেলতে পারি? আমি এটি একটি ভিএফএটি ফাইল সিস্টেম একটি দূষিত ফাইল মনে হয়।

?????????  ? ?       ?        ?            ? 100.jpg

আপনি এটি সাধারণত মুছে ফেলার চেষ্টা করার সময় কোন বিশেষ ত্রুটি (গুলি) সম্মুখীন হন?
Ruel

আপনি আউটপুট যোগ করতে পারে ls -B ?
Hennes

ব্যক্তিগতভাবে আমি এই মত লাগছিল একটি ফাইল ছিল, এবং যে কোন ls কমান্ড, সহ ls -B, আমাকে দিয়েছেন "ls: tmp / vagrant-cache অ্যাক্সেস করতে পারবেন না: স্টাইল ফাইল হ্যান্ডেল"
Jonathan Hartley

উত্তর:


4

এক সম্ভাবনা খুঁজে বের করতে হয় inode ফাইল সংখ্যা, যা আপনি চলমান দ্বারা করতে পারেন ls -i। এটি দুটি কলাম ফেরত দেবে - প্রথমটি হচ্ছে ইনডোড এবং দ্বিতীয়টি হচ্ছে ফাইল নাম। আপনি তারপর ব্যবহার করতে পারেন find শুধুমাত্র নির্দিষ্ট আইডোডের সাথে ফাইলটি নির্বাচন করতে এবং এটি মুছতে কমান্ডটি নির্বাচন করুন।

sh-4.1$ ls -i .
  17921 somefile.ods
    169 someotherfile.conf
    305 -????????? ? ? ? ? ? 100.jpg
  18048 yetanotherfile.jpg

sh-4.1$ find . -maxdepth 1 -inum 305 -ok rm '{}' \;
< rm ... -????????? ? ? ? ? ? 100.jpg > ? y

যেহেতু ইনয়েডটি সম্ভবত ফাইলটির অনন্য (কোন হার্ডলিংক অনুমান করা হয় না), এটি আপনাকে ওয়াইল্ডকার্ডের সাথে ঝুঁকি ছাড়াই মুছে ফেলতে দেবে। দ্য maxdepth এবং ok অনুসন্ধান কমান্ডের বিকল্পগুলি এটি দুর্ঘটনাক্রমে ভুল ফাইলটি আঘাত করবে এমন কম সম্ভাবনা তৈরি করে।


3

আমি সিএওএর পরামর্শের সামান্য বেশি প্রতিরক্ষামূলক সংস্করণ সুপারিশ করবো:

rm -i ./*100.jpg*

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

এটা সম্ভব, উপায় দ্বারা, অদৃশ্য অক্ষর আছে ভিতরে স্ট্রিং "100.jpg"। উপরে যদি আপনি একটি ত্রুটি বার্তা দেয় যেমন " rm: ./*100.jpg*: not found ", এই জন্য. ls -1fw | cat -v সহায়ক হতে পারে।


হেই ... আমি এমনকি ড্যাশ দেখতে না। ভালো বল ধরা. :)
cHao

3

আমি এখানে কোন উত্তর আসলে সমস্যা ছিল Stig রিপোর্ট যদি আমি নিশ্চিত নই। আমি শুধু আমার ext4 ফাইল সিস্টেম এ এই সমস্যা মধ্যে দৌড়ে:

# ls -l /tmp/dependencies/
ls: cannot access /tmp/dependencies/easy-rsa-master: No such file or directory
total 0
?????????? ? ? ? ?            ? easy-rsa-master

# ls -i /tmp/dependencies/
ls: cannot access /tmp/dependencies/easy-rsa-master: No such file or directory
? easy-rsa-master

# rm -r /tmp/dependencies
rm: descend into directory ‘dependencies’? y
rm: cannot remove ‘/tmp/dependencies/easy-rsa-master’: No such file or directory
rm: remove directory ‘dependencies’? y
rm: cannot remove ‘dependencies’: Directory not empty

ফাইল নিজেই তার ফাইল বৈশিষ্ট্য বরাবর দূষিত ছিল। ls -i স্পষ্টভাবে কোন অয়ন ID দেখায়। আরএম ব্যবহার করবেন না কৌশল। এমনকি rm -rf ডিরেক্টরির মধ্যে traverses এবং সরাসরি ফাইল (এবং নীরবভাবে) মুছে ফেলার চেষ্টা করে।

আমার সমাধান আপত্তিকর ফাইল ছাড়া ডিরেক্টরি পুনরূদ্ধার ছিল। তারপরে আপনি ডিরেক্টরিটিকে অন্য অবস্থানে স্থানান্তর করতে পারেন, যেমন / tmp। এটি একটি রিবুট করার পরে চলে যাবে অথবা যখন আপনার ডিস্ট্রো / tmp ডিরেক্টরিটি (আশা করে) পরিষ্কার করবে।


আপনাকে এটি একই ফাইল সিস্টেমে কোথাও সরাতে হবে এবং আমি নিশ্চিত নই যে লেখকটির পুনঃনির্মাণের দ্বারা লেখকের অর্থ কী।
Ben Mathews

0

আপনি চেষ্টা করতে পারেন

rm *100.jpg*

এর? হয় হয় আক্ষরিক প্রশ্ন চিহ্ন বা অক্ষর যে জ্ঞান না। ফাইল পদ্ধতিটি যদি বন্ধ না হয় তবে উভয় উপায়ে, OS নিজেই (এবং শেল) সাধারণত ফাইলটি সরাতে পারে।

যদি ফাইল সিস্টেম হয় আপ messed আপ, যদিও, উপাদান মুছে ফেলা এটা আরও খারাপ হতে পারে। আমি ড্রাইভ স্ক্যান করতে উইন্ডোজ বুট করার সুপারিশ করব, এবং যদি আপনি করতে পারেন সেখানে ফাইল মুছে ফেলতে।


0

আপনি এটি চেষ্টা করতে পারেন:

  1. আপনার ডিরেক্টরি পুনঃনামকরণ।
  2. মূল ডিরেক্টরি (খালি) বিনোদন।
  3. এটি অন্যান্য ফাইল অনুলিপি করুন।
  4. যে ফাইল ধারণকারী ডিরেক্টরি মুছে দিন।

0

আপনি যদি প্রতিটি দূষিত ফাইল মুছে ফেলতে চান তবে আপনি এটি করতে পারেন:

ls -1 | grep -P "[\x80-\xFF]" | xargs rm

উপরে grep কমান্ড grep ফাইল যা non ASCII অক্ষর আছে।

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