web-dev-qa-db-ja.com

Mac OSXターミナルで印刷できない文字を含むファイルを削除する方法

重複の可能性:
OS Xでファイル名に奇妙な文字が含まれているファイルを削除する

Iconsという名前のファイルがあり、印刷できない文字が追加されたフォルダーがあります。 -Bオプションを指定すると、印刷できないことがわかります。

$ ls -B
$ Icon\015

ls -bを使用すると、次のようになります。

$ ls -b
$ Icon\r

ファイルを削除したいのですが、印刷できない文字を入力する方法が見つかりません。私が行った場合:

$ rm Icon\015

私は得る:

$ Icon\015: No such file or directory

私が行った場合:

$ rm Icon\r

私は得る:

$ Icon\r: No such file or directory

フォルダ全体を削除することもできますが、そのようなファイルは多くのユーザーフォルダにポップアップ表示されるため、これを行うためのより一般的な方法が必要です。

シェルはすべてのCRを自動的に変換します(\r)in a LF(\n)そして前のコマンドを実行します。ただし、echoを使用してLF文字を生成できます。これらはすべて機能するはずです。

rm $(echo -e "Icon\r")

rm $(echo -e "Icon\015")

echo -e "Icon\r" | xargs rm

echo -en "Icon\r" | xargs -0 rm

最後のオプションはかなり堅牢で、考えられるすべての奇妙な文字を処理する必要があります。

3
Dennis

コマンドラインに非印刷文字を含めるには、いくつかの方法があります。最も単純な(bashのみの)オプションは、一重引用符で囲まれた文字列の前に$を使用することです。これにより、bashは文字列内の置換をエスケープします。いくつかの種類のエスケープシーケンスを処理するため、これらは両方とも機能することに注意してください。

rm $'Icon\r'
rm $'Icon\015'

または、Control-M(別名return)の前にControl-Vと入力して、シェルに「次に入力する文字を文字通りコマンドに含める必要がある」と指示することもできます。

rm Icon^V^M

(^ Vは実際にはコマンドの一部ではないため、コマンドラインにエコーされないことに注意してください)。

2
Gordon Davisson

印刷できない1文字の場合、「?」を使用できます。 1文字のワイルドカードとして。したがって、abc?def?.Zipはabc1def2.Zipを意味し、abc!def#.Zipも意味します。

0
pbies