web-dev-qa-db-ja.com

ファイル名に特殊文字を含むファイルを削除できません

私はUbuntu 9.10(Karmic)を使用しており、次の2つのファイルの中で多くのファイルを含むディレクトリがあります。

./baer.jpg
./bär.jpg

bär.jpgを削除したいのですが、できません。

rm bと入力してTABを押すと、両方のファイルが表示されます。äを追加してTABを押すと、何も表示されません。

bär.jpgを削除するには、何をする必要がありますか?

このディレクトリには実稼働環境で使用されるファイルがたくさんあるため、親フォルダを削除することは私にとって解決策ではありません。

6
bzero

特殊文字を使用したファイルを削除する方法を見つけました。

  1. cd <directory with that file>
  2. ls -ALi
  3. ディレクトリリストの一番左に、各ファイルのiノードのIDが表示されます。
  4. IノードIDを使用してファイルを削除します。

    find . -inum <inode ID of your file> -exec rm -i {} \;

これは私の問題ではうまくいきました。お役に立てれば!

10
bzero

bash wildcards を使用できます

 rm b?r.jpg

ここで、?は正確に1文字を表します。別の方法(両方のファイル名が同じ長さの場合)は

rm b[!e]r.jpg

[!e]は、「e」以外の任意の文字を意味します。

2
Sparhawk

さて、それが単一の問題のあるファイルである場合、grepを介してマッチングを使用してファイルを削除してみてください。

neal@dsadsa:~$ touch junk_ä_deleteme
neal@dsadsa:~$ ls | grep junk | grep deleteme | xargs rm

ここでは、junk_ä_deletemeという名前のファイルを作成しています。面白いシンボルの前( "junk")と後( "deleteme")の文字を一致させることで、後で削除します。このアプローチはあまり良い方法ではありませんが、単一のファイルであれば機能する可能性があります。

おそらくより良い解決策は、ファイルに一致する正規表現を作成し、そのファイル名をrmにパイプすることです。

0
Neal P