2016-04-28 24 views
1

異なる文字を別の文字に変換するLinuxシェルのコピー中にファイルの名前を変更するにはどうすればよいですか?vfatのコピー中にファイルの名前を変更する方法

私はあなたがこれを行うためにpaxツールを使用できることを知っています。

例: pax -rw -s '/?:/_/g/ INPUTDIR OUTPUTDIR

私は次のディレクトリ構造

- source 
    +- documentation? 
     +- file:examples 

を持っている。しかし、私はこれが動作しないQM

:?CLにとを変換したいと思います: pax -rw -s '/?/QM/g/ -s '/:/CL/g/ INPUTDIR OUTPUTDIR

、これではない、次のいずれか pax -w -s '/?/QM/g/ INPUTDIR | pax -r -s '/:/CL/g/ OUTPUTDIR

+1

あなたは '?'を_' \\ '' _ – rock321987

+0

としてエスケープする必要があります。申し訳ありませんが、それは試した後で役に立ちません。 – ebart

+0

バックスラッシュがありません:man paxはmultiple -sも可能ですが、最初のものがさらに置換を停止するので、できません - http://linux.die.net/man/1/paxを参照してください –

答えて

0

は、ディレクトリリストのシェルコマンドを生成し、\?を使用して、名前全体を交換する単一のpaxコマンドを作ります。

+0

OK - 私の考えは、複数のpaxコマンドをパイプして、追加のスクリプトを作成しないようにすることでした。 – ebart

+0

-sは出力ファイルへの入力ファイルの名前のようです - そうですか?だからパイプはやらないだろうし、パックスも繰り返さない。 _おもう_。おそらくスマートなlinuxerは、バックスクリプトを使ってシェルスクリプトを実行するかもしれません。 –

+0

paxコマンド 'pax -w -s '/?/ QM/g' source/|を使用すると、 pax -s '/:/ CL/g'出力は必要に応じて正確です。 **しかし、**それは標準出力にのみ表示されます。 – ebart

関連する問題