2016-04-28 61 views
1

在Linux shell的复制期间如何将文件重命名为将不同的字符转换为其他不同的字符?如何在vfat的复制过程中重命名文件

我知道你可以使用pax工具来做到这一点。

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

我有以下目录结构

- source 
    +- documentation? 
     +- file:examples 

但我想:转换为CL?QM

这不起作用: pax -rw -s '/?/QM/g/ -s '/:/CL/g/ INPUTDIR OUTPUTDIR

,这也不: pax -w -s '/?/QM/g/ INPUTDIR | pax -r -s '/:/CL/g/ OUTPUTDIR

+1

_maybe_您需要转义'?'作为_' \?'_ – rock321987

+0

对不起,但这并没有帮助 - 尝试之后。 – ebart

+0

除了缺少反斜杠:man pax表示可能有多个 - 但第一个成功停止进一步替换 - 因此无法完成 - 请参阅http://linux.die.net/man/1/pax –

回答

0

目录下生成一个列表的shell命令,使单一的PAX命令替换整个名称,使用\?

+0

好的 - 但我的想法是管道多个pax命令,以避免创建一个额外的脚本。 – ebart

+0

-s似乎是将输入文件重命名为输出文件 - 对吗?所以一个管道不会这样做,重复这个pax也不行。 _我认为_。可能是一个聪明的linuxer可能会在shell脚本中使用反引号或其他。 –

+0

如果我使用管道pax命令'pax -w -s'/?/ QM/g'source/| pax -s'/:/ CL/g'输出根据需要是正确的。 **但是**它只打印在标准输出上。 – ebart