SSHで削除できないファイルがあります。
ディレクトリからコマンドを実行すると明らかに存在しますが、ls
ファイルから実行しようとすると次のように表示されます。rm
cannot remove 'database.sql': No such file or directory
そのファイルとフォルダに対する権限を確認してみると、777
削除権限が必要です。
実行すると、lsattr
次のように通知されます。
No such file or directory While reading flags on ./database.sql
最後に再実行しようとすると、次のようにrm .
表示されます。
rm: cannot remove 'database.sql': No such file or directory
とにかく、どちらもファイルがあることを知っていますが(多くのコマンドはファイルを「表示」します)、削除できません。
all-in-one-wp-migration/storage/sgmq5lpwyiio>ls -l
total 2327360
-rwxrwxrwx 1 nobody nogroup 2383152307 Jun 3 05:56 database.sql
all-in-one-wp-migration/storage/sgmq5lpwyiio>rm database.sql
rm: cannot remove 'database.sql': No such file or directory
all-in-one-wp-migration/storage/sgmq5lpwyiio>lsattr
lsattr: No such file or directory While reading flags on ./database.sql
all-in-one-wp-migration/storage/sgmq5lpwyiio>rm *.*
rm: cannot remove 'database.sql': No such file or directory
all-in-one-wp-migration/storage/sgmq5lpwyiio>
答え1
ある種のワイルドカードを使用してリストを完成するときに、印刷されたファイル名のどこかに予期しない目立たないスペースやタブがあるときに同様の問題が発生しました。一部のシェルでは、コマンドラインでファイル名の後にタブ文字を入力すると、見えない文字で終わりが埋められます。wc -c
ファイル名の文字数を使用してこれを確認し、\n
常に計算されている印刷されていない文字を確認できます。
答え2
これは、ファイルの所有者とグループが「nobody」と「nogroup」に設定されているためです。 「nobody」ユーザーと「nogroup」ユーザーグループには、システムに対して可能な最小限の権限があります。しかし、それでもファイルを削除することはできます。
ファイルがあるディレクトリへの書き込み権限がありますか?ファイルを削除するにはディレクトリからエントリを削除するため、ディレクトリへの書き込み権限が必要な場合があります。ファイルを編集してみましたか?ディレクトリには書き込み権限がない場合がありますが、ファイルには書き込み権限があります。
上記の説明で説明したように、これはファイルまたはシステムの破損である可能性があり、サービスが実行されていてファイルを使用している可能性があります。
chown
あなたをchgrp
グループの所有者と所有者グループにしてみてください。
答え3
ファイル名が正しくないか、一部のジャンク文字が含まれている可能性があります。
努力する
find . -maxdepth 1 -exec printf "'{}'\n" \;
または
名前にジャンクまたはスペースを含むファイルのみを一覧表示
printf '%q\n' *[\?\$\*%[:space:]]*