একটি ফাইল সরানোর চেষ্টা করার সময় "এই জাতীয় কোনও ফাইল বা ডিরেক্টরি নেই", তবে ফাইলটি বিদ্যমান?


21

আমি পিএনএফ স্ক্রিপ্টের মাধ্যমে আমার সার্ভারে আপলোড করা একটি পিএনজি চিত্র সরিয়ে দেওয়ার চেষ্টা করছি। আমি যখনই এফটিপি এবং টার্মিনালের মাধ্যমে এটি মুছতে চেষ্টা করি তখনই ত্রুটি পাই

No such file or directory

যাইহোক, আমি যখন lsডিয়ারে থাকি তখন ফাইলটি তালিকাবদ্ধ থাকে এবং এটি আমার এফটিপি ক্লায়েন্টের তালিকাভুক্তও হয়। আমি একই নামের সাথে একটি ফাইল তৈরি করার চেষ্টা করেছি এবং একই নামের সাথে দুটি ফাইল পেয়েছি।

আমি যে ফাইলটি অনুমান করে নেই তা খুলতে পারি, তবে আমি এখনও এটি মুছতে পারি না। আমি আমার সার্ভারটি রিবুট করার চেষ্টাও করেছি। কোন ধারণা কি হতে পারে? আমি উবুন্টুর একটি 64 বিট সংস্করণ চালাচ্ছি, তবে আমি এটি 32/64 বিটের সমস্যা বলে মনে করি না। আমারও লক্ষ্য করা উচিত যে আমি একই পিএইচপি স্ক্রিপ্ট দ্বারা আপলোড করা আরও অনেক পিএনজি ফাইলগুলি সরিয়েছি।

আউটপুট জন্য ls -l

total 224 
-rw-r--r-- 1 www-data www-data 222838 May 13 04:14 qyxdshyikfr_fishing_timeout.png 
-rw-r--r-- 1 root root 272 May 14 06:54 upload.php

চেষ্টা করার সময় আউটপুট rm

rm: cannot remove ‘qyxdshyikfr_fishing_timeout.png’: No such file or directory

আপলোড.এফপি: http://pastebin.com/z87eypTY


ls -lডিরেক্টরি থেকে আউটপুটটি অনুলিপি করুন , সম্পূর্ণ rmকমান্ড এবং এর
আউটপুটও কপি করুন

@hemayl মোট 224 -rw-r - r-- 1 www-data www-data 222838 13 মে 04:14 qyxdshyikfr_fishing_timeout.png -rw-r - r-- 1 মূল মূল 272 মে 14 06:54 upload.php rm: 'qyxdshyikfr_fishing_timeout.png' অপসারণ করতে পারবেন না: এ জাতীয় কোনও ফাইল বা ডিরেক্টরি নেই
ডিভিনিফ্রেন

1
@ ডেভিনিফ্রান্স তথ্য যুক্ত করতে দয়া করে আপনার প্রশ্ন সম্পাদনা করুন।
মুড়ু

আপনি কোন ডিরেক্টরি থেকে rmকমান্ড চালাচ্ছেন ?
হিমাইল

1
@ সামুয়েল কেন এটি একটি ফাইল সিস্টেমের সমস্যার পরামর্শ দেয়? unlinkকল সবসময় একটি ফাইল যা বিদ্যমান নেই এটি ব্যর্থ হবে। আমি যখন আমার সিস্টেমে সেই straceকমান্ডটি চালিত করি , যেখানে আমি জানি যে আমার কাছে এ জাতীয় কোনও ফাইল নেই, এটি অনুরূপ আউটপুট উত্পন্ন করে; আমি মনে করি না যে এটি বোঝায় যে আমার একটি ফাইল সিস্টেমের সমস্যা আছে! এটি অনেক বেশি সম্ভবত বলে মনে হয় যে ফাইলের নামটি ফাইলের নামগুলি প্রদর্শন করার ক্ষেত্রে সীমাবদ্ধতার কারণে কেবল অন্য উত্তরগুলিতে যেমন প্রস্তাবিত হয়েছে তেমন কিছুটা পৃথক । qyxdshyikfr_fishing_timeout.pngls
এলিয়াহ কাগন

উত্তর:


21

আমি একই নামের সাথে একটি ফাইল তৈরি করার চেষ্টা করেছি এবং একই নামের সাথে দুটি ফাইল পেয়েছি।

যে বলেন, অনুপস্থিত ফাইলসিস্টেম দুর্নীতি, আপনি দুটি ফাইল আছে দুটি ভিন্ন নাম দিয়ে যে একই প্রদর্শিত কারণ অ মুদ্রণ অক্ষর বা অক্ষর আছে যা আপনার চরিত্র সেট / ফন্টে একই চেহারা করুন। --escapeবিকল্প ls, এই ধরনের স্থানেই আপনার বন্ধু হিসাবে যেমন সরঞ্জাম cat -v

সুতরাং, খুব, হয় rm -i -- *

আরও পড়া


আমি ফাইল এবং ফাইল নামটির স্রষ্টা ছিল যা আপলোড হয়েছিল। কেউই আমার সার্ভারকে নাশকতা করার চেষ্টা করছিল না কারণ আমি একমাত্র ব্যক্তি যিনি আপলোডের সম্পূর্ণ পথ rm -i -- *জানেন ph
ডিভিনিফ্রান্স

3
@ ডেভিনিফ্রান্স যদি এই উত্তরটি আপনার সমস্যার সমাধান করে, দয়া করে আপভোটিস গণনার অধীনে চিহ্নিত চিহ্নটি ক্লিক করে এটি গ্রহণযোগ্য উত্তর হিসাবে চিহ্নিত করুন, যাতে ভবিষ্যতের ব্যবহারকারীরা এই সমাধানটি আপনার পক্ষে কাজ করেছে এই বিষয়টি সম্পর্কে সচেতন হতে পারেন।
কোস

1
কেউ কি rm -i -- *আদেশ ব্যাখ্যা করতে পারেন ?
user3731622

আমি যা বুঝি তা থেকে: -i প্রতিটি ফাইল সরানোর আগে পাসিং আপনাকে অনুরোধ জানাবে। সমস্ত নাম নির্বাচন --করার আগে *তাদের নামগুলিতে বিশেষ অক্ষর অন্তর্ভুক্ত কিনা তা নির্বিশেষে। তথ্যসূত্র: https://explainshell.com/explain?cmd=rm+-i+--++
মল্টেনমফিনস

16

টিএল; ডিআর: চালান ls -1b, ফাইলের নামটি সন্ধান করুন, যে লাইনে এটি প্রদর্শিত হবে তা অনুলিপি করুন এবং এটি দিন rm

অন্যরা যেমন পরামর্শ দিয়েছে, সম্ভবত এটি সীমাবদ্ধতার কারণে ls- এবং ক্লায়েন্ট এবং সার্ভার সফ্টওয়্যার সহ কিছু অন্যান্য প্রোগ্রাম - ডিফল্টরূপে নিয়ন্ত্রণের অক্ষরযুক্ত অদ্ভুত ফাইলের নামগুলি হ্যান্ডেল করে। জেডিবিপি-র উত্তরের সাথে আপনার সাফল্য দৃ strongly়ভাবে বোঝায় যে এই ঘটনাটি ছিল, যদিও এর আগেও এটি একটি ভাল বাজি হত।

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

    এই আচরণ lsবিভ্রান্তিকর হতে পারে তবে এটি কোনও বাগ নয়, ব্যবহারকারী স্পষ্টভাবে ওভাররাইড করতে পারেন (নীচে দেখুন)।

  • দূর থেকে কোনও ফাইল অ্যাক্সেস করার বা সরানোর চেষ্টা করার সময়, ক্লায়েন্ট বা সার্ভার সফ্টওয়্যারগুলিতে বাগগুলি এ জাতীয় সমস্যা তৈরি করতে পারে।

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

এটি এমন পরিস্থিতি যেখানে ls -1b(বা dir -1) কার্যকর হয়:

  • -1lsপ্রতি লাইনে একটি করে এন্ট্রি প্রদর্শন করতে বলে । একটি ফাইলের নাম কোথায় এবং অন্যটি শুরু হয় সে সম্পর্কে কোনও বিভ্রান্তি নেই। এটি অদ্ভুত নামযুক্ত ফাইলগুলির জন্য কার্যকর।
  • -blsকোনও বিশেষ চরিত্রের জন্য পালানোর ক্রম প্রিন্ট করতে বলে । আউটপুট ls -bঅনুলিপি করে অনুলিপি কমান্ডে আটকানো যেতে পারে, কোনও যোগিত উদ্ধৃতি ছাড়াই : সমস্ত সমস্যাযুক্ত চরিত্রগুলি ইতিমধ্যে এমনভাবে উদ্ধৃত করা হয়েছে যা শেলটি তাদের কী হিসাবে তা সনাক্ত করতে পারে।

কেবলমাত্র একটি সাবধানবাণী রয়েছে: যদি কোনও লাইনের শেষ অক্ষরটি উপস্থিত হয় তবে তার \পরে একটি অক্ষর অনুলিপি করুন, যেহেতু এর অর্থ \একটি স্থান উদ্ধৃত করছে।

আপনি ls -1bঠিক এর মতো চালাতে পারেন , বা আপনি এটিতে শেল গ্লোব প্যাটার্নটি (যেমন, ls -1b qyx*) পাস করতে পারেন । গ্লোববিং ফাইলটি খুঁজে পেতে পারে বা নাও পারে তার উপর নির্ভর করে নিয়ন্ত্রণের অক্ষরগুলি (বা অন্যান্য অদ্ভুত অক্ষরগুলি) গ্লোব প্যাটার্নে নামের অংশটিতে উপস্থিত হয় কিনা।

\আপনাকে প্রদত্ত ফাইলের নামের উদ্ধৃত সংস্করণটি অনুলিপি করে ls, আপনি এটি একটি কমান্ডে পেস্ট করতে পারেন। আপনাকে কোনওভাবেই এটি ম্যানুয়ালি সংশোধন করতে হবে না। আপনার ক্ষেত্রে, আপনি ফাইলটি মুছতে চান, টাইপ করুন rm, একটি স্থান টাইপ করুন , লাইনটি আটকে দিন এবং টিপুন Enter

আরও পড়া:


1
খুব দুর্দান্ত -bথ্যাঙ্কস =) এবং +1
এবি

আমি ওপি থেকে কিছু বাদ দিয়েছি যখন আমি একই নামে একটি ফাইল তৈরি করেছি, আমার এফটিটিপি ক্লায়েন্টে যখন আমি প্রথম ফাইলটি মুছে ফেলার চেষ্টা করছিলাম তখন এটি নতুন ফাইলটি মুছে ফেলবে। এ কারণেই আমি ভাবি নি যে কোনও বিশেষ চরিত্র জড়িত ছিল এবং আমি এখনও জানি না যে আমি বিশেষ চরিত্রটি কী ব্যবহার করেছি rm -i -- *
ডিভিনিফ্রান্স 21

@ ডেভিনিফ্রান্স অতিরিক্ত অক্ষর ফাইল নামের শেষে একটি স্থান। এটি এখনও lsপ্রশ্নের আউটপুটে রয়েছে তবে আপনি "সম্পাদনা" ক্লিক করলেই পাঠ্য মোডে দেখা যাবে।
ইজকাটা

@ ইজকাটা শুভ কল! আমার এটি যাচাই করা উচিত ছিল। সম্পাদনার ইতিহাসে আমি যখন পুনর্বিবেচনা 3 প্রসারিত করি তখন এটিও উপস্থিত হয় (পুরো ফাইলের নাম সহ, স্থানের স্থান সহ, সবুজ রঙে হাইলাইট করা হয় এবং এইভাবে বোধগম্য হয়)। আপনি যা বলেছেন তা এখন পর্যন্ত সর্বাধিক সুস্পষ্ট এবং বিশেষভাবে সঠিক ব্যাখ্যা - যদি আপনি একটি উত্তর পোস্ট করেন যদি এটি ব্যাখ্যা করে যে এটি একটি পিছনের স্থান থেকে, এবং আপনি কীভাবে জানেন এবং কোন আদেশটি ফাইলটি সরিয়ে ফেলবে (যদি ওপিটিতে এখনও থাকে) , আমি জানি আমি এটি উপড়ে ফেলতে পারি।
এলিয়াহ কাগন

@ এলিয়াকাগান ছবিগুলি সহ করেছেন
ইজকাটা

3
  1. findআউটপুটটি ব্যবহার এবং পরীক্ষা করুন:

    যদি ফাইলটি পাওয়া যায় নি, তবে অনুসন্ধান শব্দ সংক্ষেপিত *qyxdshyikfr*যেমন সামান্য: *qyxds*বা *fishing*

    sudo find . -maxdepth 1 -type f -name "*qyxdshyikfr*"
    
  2. ঠিক আছে, findপদক্ষেপ 1 এবং অনুসন্ধান শব্দ ব্যবহার করেrm

    find . -maxdepth 1 -type f -name "*qyxdshyikfr*" -print0 | xargs -0  rm
    

1
বরং কলিং চেয়ে rmথেকে একটি পাইপ মাধ্যমে নামে findকরার xargs, আমি কেবল ব্যবহার করার প্রস্তাব find'র -deleteকর্ম। এছাড়াও sudoপ্রয়োজন হয় না। কম উল্লেখযোগ্যভাবে, আমি -type fযেখানে পরিষ্কারভাবে এটি সহায়ক সেখানে বাদ দেওয়ার পরামর্শ দিই । সম্ভবতঃ ওপি মুছে ফেলতে চাইলে প্রবেশকারীটি একটি প্রতীকী লিঙ্ক হিসাবে পরিণত হয়েছে, উদাহরণস্বরূপ, তারা এখনও এটি খুঁজে পেতে চান এবং এখনও এটি মুছতে চান। -deleteকর্ম যাও recursively একটি ডিরেক্টরি পরাস্ত না; আপনার rmআদেশ নেই যেহেতু আপনার নেই -r। সুতরাং আপনি এখানে দুর্ঘটনাক্রমে পুরো (ফ্রি-ফাঁকা) ফোল্ডারটি ব্যবহার না করে ফাটিয়ে যাচ্ছেন না -type
এলিয়াহ কাগন

ঠিক আছে, আমাকে একটি সেকেন্ড দিন।
এবি

আমার ক্ষেত্রে এমনকি find ... -delete" এমনকি মুছতে পারে না ... এমন কোনও ফাইল বা ডিরেক্টরি নেই"
হার্মিং মনিকা বন্ধ করুন

1

এলিয়ার উত্তর সম্পর্কে আমার মন্তব্য থেকে বিস্তারিত পোস্ট করে পোস্ট করা

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

অতিরিক্ত স্থান

মন্তব্যগুলি সহ সমস্যার নকল করার জন্য একটি দ্রুত সামান্য টার্মিনাল সেশন:

$ touch 'foo '        # Create file with a space at the end
$ ls -l               # Space is not visible in ls output
total 0
-rw-rw-r-- 1 izkata izkata 0 May 14 21:59 foo 

$ rm foo              # Cannot remove it when not specifying the space
rm: cannot remove ‘foo’: No such file or directory

$ rm 'foo '           # Can remove it if we quote the file name and include the space
$ rm foo\             # Or can escape the space to tell bash to include it as part of the filename

ব্যবহার ট্যাব সমাপ্তির এছাড়াও থাকবে সম্পূর্ণরূপে এখানে সমস্যা পাশে ফেলে রাখা, যেমন ব্যাশ স্পেস সঠিকভাবে অব্যাহতি স্মার্ট যথেষ্ট (এটি সাধারণভাবে একটি ভাল অভ্যাস এত টাইপিং পাথ গতি বাড়ায়)

উদাহরণস্বরূপ, আমি টাইপ করে থাকলে rm f<tab>এটিতে স্বয়ংক্রিয়ভাবে সম্পূর্ণ হবে rm foo\<space><space>, উপরের কোড ব্লকের শেষ উদাহরণ হিসাবে।


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

0

একবার, আমি নটিলাসকে মূল হিসাবে খোলার জন্য একটি ফাইল তৈরি করেছি, তবে নটিলাস থেকে দেখার সময় ফাইলটির নামটি ছিল "ফাইল ব্রাউজার (রুট)", তখন যখন আমি অপসারণের চেষ্টা করেছি

$ rm "File Browser (Root)"
$ sudo rm "File Browser (Root)"
$ sudo rm "File Browser (Root).desktop"

আমি পেয়েছি শুধুমাত্র anwser ছিল: "আরএম: 'ফাইল ব্রাউজার (রুট) .ডেস্কটপ' অপসারণ করতে পারবেন না: এই জাতীয় কোন ফাইল বা ডিরেক্টরি"

তারপরে যখন আমি দৌড়ব:

$ ls -l

আমি দেখেছি / মনে পড়েছি যে ফাইলটির নামটি আসলে "নটিলাস-রুট.ডেস্কটপ" ছিল

সুতরাং আমি চালান:

$ sudo rm "Nautilus-root.desktop"

আমার জন্য কাজ, আশা করি এটি সাহায্য করে!


0

সুতরাং আমার এই সমস্যা ছিল এবং এই জিনিসগুলির কোনওটিই আমার পক্ষে কাজ করে না। যা কাজ করেছিল তা হুবহু একই নামের সাথে একটি ফাইল তৈরি করছিল। এটি উদাহরণ ১.২.৩ নামে একটি ফোল্ডার ছিল তাই আমি একটি নতুন ফোল্ডার তৈরি করেছি এবং এটি মুছবে না এমনটির মতো হ'ল named পুরানো ফোল্ডারটি অদৃশ্য হয়ে গেল এবং আমি নতুনটি মুছলাম।


0

rsyncআমার চিত্রগুলির ডিরেক্টরিটি একটি ম্যাকের সাথে ব্যাকআপ করার পরে এবং উবুন্টুতে পড়ার পরে আমার একই অবস্থা হয়েছিল situation বিভিন্ন নামের দুটি ফাইল (আসলে ডিরেক্টরি) ছিল তবে একই বিষয়বস্তু রয়েছে। আমি একজনকে ট্র্যাশে মুছে ফেলেছি (নটিলাস ব্যবহার করে), তবে অন্যটি মুছে ফেলতে পারি না, এমনকি কমান্ড লাইন থেকেও। এটি বলবে:

$ rmdir Pictures
rmdir: failed to remove 'Pictures': No such file or directory
$ rm Pictures
rm: cannot remove 'Pictures': Is a directory

Ls -i -l দিয়ে ইনোড নম্বরগুলি পরীক্ষা করার পরে দেখা গেল যে উভয় ডিরেক্টরিতে একই ইনোড নম্বর রয়েছে। শক্ত লিঙ্কের মতো মনে হচ্ছে ...

সমাধানটি আশ্চর্যজনকভাবে সহজ ছিল - আইকনে ডান ক্লিক করে ট্র্যাশ খালি করুন। এর পরে উভয় ডিরেক্টরি চলে গেল।

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