web-dev-qa-db-ja.com

<ファイル>を削除できません:そのようなファイルまたはディレクトリはありません

私は自分で作成したプログラムを実行しただけで、ファイルを作成し、ファイルでいっぱいにしています。ただし、名前の生成で何か間違った(または少なくとも意図したとおりではなかった)と、フォルダーにスタックされた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:(「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 -- *outの内容

これらのファイルを削除するにはどうすればよいですか?
重要なのは、私にはrootアクセス権がないため、それを必要としないオプションを選択することです。

3
Simon Klaver

ゴミ箱に移動するだけで、UIからファイルを削除できます。ゴミ箱に行き、そこから削除します。このプロセスにより、Linuxシステムからファイルが完全に削除されます。

2
Aditya Sharma

それはまるで、ディレクトリ内のファイルではなくディレクトリiノード自体にゴミを書き込めたようです。ただし、試してみてください

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削除プロセスが「裏で」ディレクトリのアクセス許可を変更した場合、削除が機能した可能性があります。

0
Uditha Desilva

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

これを回避するには、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

試してみる

0
tachomi