私はUbuntu 9.10(Karmic)を使用しており、次の2つのファイルの中で多くのファイルを含むディレクトリがあります。
./baer.jpg
./bär.jpg
bär.jpg
を削除したいのですが、できません。
rm b
と入力してTAB
を押すと、両方のファイルが表示されます。ä
を追加してTAB
を押すと、何も表示されません。
bär.jpg
を削除するには、何をする必要がありますか?
このディレクトリには実稼働環境で使用されるファイルがたくさんあるため、親フォルダを削除することは私にとって解決策ではありません。
特殊文字を使用したファイルを削除する方法を見つけました。
cd <directory with that file>
ls -ALi
IノードIDを使用してファイルを削除します。
find . -inum <inode ID of your file> -exec rm -i {} \;
これは私の問題ではうまくいきました。お役に立てれば!
bash wildcards を使用できます
rm b?r.jpg
ここで、?
は正確に1文字を表します。別の方法(両方のファイル名が同じ長さの場合)は
rm b[!e]r.jpg
[!e]
は、「e」以外の任意の文字を意味します。
さて、それが単一の問題のあるファイルである場合、grep
を介してマッチングを使用してファイルを削除してみてください。
neal@dsadsa:~$ touch junk_ä_deleteme
neal@dsadsa:~$ ls | grep junk | grep deleteme | xargs rm
ここでは、junk_ä_deleteme
という名前のファイルを作成しています。面白いシンボルの前( "junk")と後( "deleteme")の文字を一致させることで、後で削除します。このアプローチはあまり良い方法ではありませんが、単一のファイルであれば機能する可能性があります。
おそらくより良い解決策は、ファイルに一致する正規表現を作成し、そのファイル名をrm
にパイプすることです。