削除できません:対応するファイルやディレクトリはありません。

削除できません:対応するファイルやディレクトリはありません。

ちょうどファイルを作成し、コンテンツでいっぱいになった場所に作成したプログラムを実行しました。ただし、名前の生成に問題が発生し(または少なくとも期待どおりに機能しない)、フォルダに「存在しない」ために削除できない4つのファイルがあります。

コマンドの出力は次のとおりです。

ls -li:

ls: cannot access één: No such file or directory
ls: cannot access wetenschap­pen.: No such file or directory
ls: cannot access verantwoor­delijk: No such file or directory
ls: cannot access woord wordt: No such file or directory
total 0
? -????????? ? ? ? ?            ? één
? -????????? ? ? ? ?            ? woord wordt
? -????????? ? ? ? ?            ? verantwoor­delijk
? -????????? ? ? ? ?            ? wetenschap­pen.

rm -i -- *:

rm: remove regular file `één'? y
rm: cannot remove `één': No such file or directory
rm: remove regular file `woord wordt'? y
rm: cannot remove `woord wordt': No such file or directory
rm: remove regular file `verantwoor­delijk'? y
rm: cannot remove `verantwoor­delijk': No such file or directory
rm: remove regular file `wetenschap­pen.'? y
rm: cannot remove `wetenschap­pen.': No such file or directory

rm -rf folder:(「フォルダ」はファイルが配置されているフォルダです)

rm: cannot remove `folder': Directory not empty

find . -type f -delete:(Uditha Desilvaの回答)

find: cannot delete `./één': No such file or directory
find: cannot delete `./wetenschap­pen.': No such file or directory
find: cannot delete `./verantwoor­delijk': No such file or directory
find: cannot delete `./woord wordt': No such file or directory

strace -o out rm -f -- *:アウトコンテンツ

このファイルをどのように削除できますか?
ちなみに、私はrootアクセス権を持っていないので、rootアクセスを必要としないオプションを好みます。

答え1

UIから「ごみ箱に移動」でファイルを削除するだけです。その後、ごみ箱に移動し、そこから削除します。このプロセスは、Linuxシステムからファイルを永久に削除します。

答え2

この動作は、ディレクトリに実行権限がないために発生します。ユーザーは操作を実行できませんが、stat()ディレクトリエントリを読み取ることができます。

これを防ぐために、chmod 700ホームディレクトリに何かをすることができます。

この動作を再現するには、任意のディレクトリでまたはchmod 600実行でき、chmod 400同じ問題が発生します。

$ chmod 400 folder
$ ls - ltr folder
-????????? ? ? ? ?            ? omd
-????????? ? ? ? ?            ? file5
-????????? ? ? ? ?            ? file4
-????????? ? ? ? ?            ? file3.txt
-????????? ? ? ? ?            ? file2.txt

$ chmod 700 folder
$ ls - ltr folder
-rw-rw-r-- 1 tachomi tachomi  2 Mar  2 08:53 file4
-rw-rw-r-- 1 tachomi tachomi  2 Mar  2 08:53 file5
-rw-rw-r-- 1 tachomi tachomi  0 Mar  2 08:53 omd
-rw-rw-r-- 1 tachomi tachomi  2 Mar  2 09:01 file1.txt
-rw-rw-r-- 1 tachomi tachomi  2 Mar  2 09:01 file2.txt

試してみてください

答え3

これは、ディレクトリ内のファイルではなく、ディレクトリinode自体にガベージを正常に書き込んだのとほぼ同じです。しかし、一度試してみてください。

find . -type f -delete

ファイルのシェル拡張を試みないので、成功することもできます。

編集:tachomiの答えは最も可能性の高い説明のようですが、400モードではディレクトリに「cd」やディレクトリ内の内容を一覧表示することはできません。

$ chmod 400 test
$ ls -li test
ls: cannot access test/Pictures: Permission denied
ls: cannot access test/Music: Permission denied
ls: cannot access test/Shows: Permission denied
ls: cannot access test/TV: Permission denied
ls: cannot access test/Movies: Permission denied
total 0
? -????????? ? ? ? ?            ? Movies
? -????????? ? ? ? ?            ? Music
? -????????? ? ? ? ?            ? Pictures
? -????????? ? ? ? ?            ? Shows
? -????????? ? ? ? ?            ? TV
$ cd test
bash: cd: test: Permission denied
$ chmod 700 test
$ cd test
$ ls -li
total 0
267447 -rw-r--r-- 1 abcd abcd 0 Mar  3 19:45 Movies
267448 -rw-r--r-- 1 abcd abcd 0 Mar  3 19:45 Music
267449 -rw-r--r-- 1 abcd abcd 0 Mar  3 19:45 Pictures
267451 -rw-r--r-- 1 abcd abcd 0 Mar  3 19:45 Shows
267450 -rw-r--r-- 1 abcd abcd 0 Mar  3 19:45 TV

ただし、GUI 削除プロセスが削除前に「背後にある」ディレクトリ権限を変更すると、削除が機能する可能性があります。

関連情報