ノード番号で削除しようとしても名前を変更または削除できない空のディレクトリがあります。私が試したコマンドは次のとおりです。私が見た唯一の例外は、シェルのファイル名の補完がファイル名の後にスラッシュを追加することです(rmdirコマンドで表示されます)。どんな提案でも歓迎します。ファイルシステムはext4です。
$ ls
'Every Breath You Take: The Classics'
$ ls -bl
ls: 'Every Breath You Take: The Classics': No such file or directory
total 0
drwxrwxrwx 1 user user 0 Nov 28 2014 Every\ Breath\ You\ Take:\ The\ Classics
$ rmdir "Every Breath You Take: The Classics"/
rmdir: failed to remove 'Every Breath You Take: The Classics/': No such file or directory
$ stat "Every Breath You Take: The Classics"
stat: cannot stat 'Every Breath You Take: The Classics': No such file or directory
$ stat "Every Breath You Take: The Classics"/
File: Every Breath You Take: The Classics/
Size: 0 Blocks: 0 IO Block: 16384 directory
Device: 37h/55d Inode: 7323 Links: 1
Access: (0777/drwxrwxrwx) Uid: ( 1000/ user) Gid: ( 1000/ user)
Access: 2020-05-27 21:18:31.130341500 -0700
Modify: 2014-11-28 23:14:32.000000000 -0800
Change: 2019-02-02 13:27:19.052670600 -0800
Birth: -
$ find . -inum 7323 -exec rmdir {} \;
rmdir: failed to remove './Every Breath You Take: The Classics': No such file or directory
find: ‘./Every Breath You Take: The Classics’: No such file or directory
以下は、複数の回答者が提案した結果です。
$ ls | hexdump -C
00000000 45 76 65 72 79 20 42 72 65 61 74 68 20 59 6f 75 |Every Breath You|
00000010 20 54 61 6b 65 3a 20 54 68 65 20 43 6c 61 73 73 | Take: The Class|
00000020 69 63 73 0a |ics.|
00000024
$ rmdir *Every*
rmdir: failed to remove 'Every Breath You Take: The Classics': No such file or directory
$ rm -i -r Every*
rm: descend into directory 'Every Breath You Take: The Classics'? y
rm: cannot remove 'Every Breath You Take: The Classics': No such file or directory
答え1
解決しました! 1年以上かかりましたが、解決策を見つけました。
問題のディレクトリは、ネットワークに接続されているストレージデバイスにあることがわかりました。だから、ssh
デバイスに直接接続しようとしましたが、ディレクトリを確認してみると大丈夫に見えました。標準rm
とrmdir
コマンドを使用して内容を削除し、ディレクトリ自体を削除できました。
ディレクトリがデスクトップの通常のコマンドに応答しない理由は依然として謎です。
答え2
チェック( ')がファイル名のほぼ一部であるようです。
$ ls
'Every Breath You Take: The Classics'
単に次のように言うことはできません。
$ rm 'Every Breath You Take: The Classics'
殻がダニを食べるからです。
代わりに、以下を試してください。
$ rmdir *Every*