このファイルを削除するにはどうすればいいでしょうか? VFAT ファイル システム内の破損したファイルだと思います。
????????? ? ? ? ? ? 100.jpg
答え1
inode
1 つの可能性は、 を実行してファイル番号を確認することですls -i
。これにより、最初の列が inode で、2 番目の列がファイル名の 2 つの列が返されます。その後、find
コマンドを使用して、特定の inode を持つファイルのみを選択し、削除することができます。
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
inode はファイルに固有である可能性が高いため (ハードリンクがないと仮定)、ワイルドカードに固有のリスクなしに削除できます。findコマンドのmaxdepth
およびok
オプションにより、誤って間違ったファイルを見つける可能性がさらに低くなります。
答え2
ここでの回答の中に、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 では明らかに inode ID が表示されません。rm を使用しても効果はありません。rm -rf でもディレクトリ内を移動し、ファイルを直接 (そして静かに) 削除しようとします。
私の解決策は、問題のあるファイルなしでディレクトリを再作成することでした。その後、ディレクトリを /tmp などの別の場所に移動できます。再起動後、またはディストリビューションが /tmp ディレクトリをクリーンアップすると (うまくいけば)、問題はなくなります。
答え3
私は cHao の提案のもう少し防御的なバージョンをお勧めします:
rm -i ./*100.jpg*
ワイルドカードに一致する各ファイルを削除するかどうか尋ねられます。これにより、誤って他のファイルも削除されることがなくなります。また、先頭のワイルド-i
カードにより、すべてのファイル名が次のように扱われます。rm
./
ファイル名それ以上のオプションはありませんrm
(先頭にダッシュがあるように見えるため、これが重要です)。
ちなみに、目に見えない文字が存在する可能性もある内部文字列「100.jpg」。上記で「rm: ./*100.jpg*: not found
」のようなエラー メッセージが表示される場合は、それが原因です。 ls -1fw | cat -v
が役立つ場合があります。
答え4
試してみるといいかもしれない
rm *100.jpg*
? は、文字通りの疑問符か、意味をなさない文字です。いずれにしても、ファイルシステムが壊れていなければ、OS 自体 (およびシェル) は通常、ファイルを削除できます。
ファイルシステムがはただし、状況がおかしくなったら、何かを削除するとさらに悪化する可能性があります。Windows を起動してドライブをスキャンし、可能であればそこにあるファイルを削除することをお勧めします。