根据文件所在的文件夹移动和重命名文件

时间:2013-10-23 17:58:32

标签: bash ant

我试图在ANT中移动一些文件,但无法弄清楚如何做到这一点。我知道如何按顺序进行,但无法弄清楚这样做的“蚂蚁方式”。

从以下位置移动文件:

./<language>/<FileName>.properties

到:

./<FileName>_<language>.properties

例如,我有:

./fr/file1.properties
./fr/file2.properties
./fr/file3.properties
./en/file1.properties
./en/file2.properties
./en/file3.properties
./ko/file1.properties
./ko/file2.properties
./ko/file3.properties

我需要将这些文件移到一个目录并重命名这样的文件:

./file1_fr.properties
./file2_fr.properties
./file3_fr.properties
./file1_en.properties
./file2_en.properties
./file3_en.properties
./file1_ko.properties
./file2_ko.properties
./file3_ko.properties

有没有一种简单的方法可以在蚂蚁中进行这种映射?我不知道我会支持哪种语言或文件名可能是什么。

在bash中,这很简单。我会做这样的事情:

find ./* -maxdepth 0 -type d | while read DIR; do 
            # */ Correct syntax highlighting

    find $DIR -maxdepth 0 -type f | while read FILE; do

        # Note: this would produce file1.properties_fr 
        # which isn't exactly right.  Probably need to 
        # use sed to remove and add .properties.  
        mv $DIR/$FILE ./$FILE_$DIR

    done;
done;

1 个答案:

答案 0 :(得分:2)

mapper任务中使用正则表达式move

<target name="rename">
  <move todir=".">
    <fileset dir=".">
      <include name="**/*.properties" />
    </fileset>
    <mapper type="regexp" from="([^/]*)/([^/]*)(\.properties)$" to="\2_\1\3" />
  </move>
</target>