ファイル名の特殊文字(\#033OA)


10

rsync中に非常に頑固なエラーが発生し、少し問題が発生しました。ファイル名に特殊文字が含まれているファイルが原因です。他にもありますが、ファイル名のエンコードを変換することで解決できます。しかし、この1つのファイルも見つかりません。

だからここにrsyncが言うことです:

../.\#033OA.tex.pyD0MB" failed: No such file or directory (2)

最初に気づくのは、文字コードを16進数または8進数にすることはできないため、グーグル検索してこれを見つけただけです。したがって、CURSOR UP文字であるかどうかは関係ありません。私はもう試した

ls -la *`printf '\033OA'`*

無駄に。私はまた、そのディレクトリのlsの出力をod無駄にパイプしてみました。

他に何ができますか?それともとにかくどんなキャラクターを探していますか?

ありがとう


1
ls -bCスタイルのエスケープを表示するを試してください
enzotib

おかげで...役に立ちました... printfの助けを借りて移動できました...このコメントを回答として再投稿した場合、私は喜んでそれを受け入れます:)
luxifer

回答:


9

-bオプションを使用するとls、非グラフィック文字をCスタイルのエスケープシーケンスとして表示できます。


1

ls -aq印刷?不可能な文字の代わりに、すべてのファイル名を印刷します。多くのUNIXバリアントで、ls -ABまたはls -Ab(manページを確認してください)8進数のエスケープを印刷します。ではls -aq、表示された出力をシェルパターンとして使用できます。

$ ls -Aq
.?OA.tex.pyD0MB
… more stuff …
$ mv -i .?OA.tex.pyD0MB weird-file
$ less weird-file

ファイル名を取得するもう1つの方法は、シェルの補完機能を使用することです。奇妙な名前が挿入されるまで、Enterキーmv .を押してTab繰り返し押します。


ls -qファイルを表示しなかったのに対し、表示ls -bしました。多分そのファイル名[weird-character]OA.texがなかったからかもしれません`printf %b '\033OA'`.tex
luxifer

@luxifer .ファイル名の先頭にa があるため、ls -Aqまたはが必要ls -aqです。シェルワイルドカードを使用する場合は、.明示的に指定する必要*があり.*ます。ファイルは含めませんが、含めます。
Gilles「SO-邪悪なことをやめよう」

いいえ、ありませんでした!私が投稿した出力はrsyncからのものであり、それは行の終わりでした。Rsyncはまず$DESTINATION/.$FILENAMEファイルを正しい名前に移動する前ににコピーします。そのため、ソースでは、ファイルの.名前の最初にファイルがありませんでした。また、前述のls -qように、ファイルは表示されませんls -bでした。
luxifer、2011
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.