将名称中包含%2f的文件移动/重命名为目录结构

我有一大堆被命名为ParentPage%2FSubPage (从我的trac wiki)导出的文件,但实际上应该像ParentPage/SubPage 。 任何人都有一个快速和肮脏的方式来重新命名和组织它们,以便ParentPage将是一个目录,然后SubPage将是一个文件里面呢?


从@Christopher Karel的回答稍微修改一下,这就是我用的:

 for FILE in $(ls | grep "%2F") do CONVERTED=$(echo $FILE | sed -e 's/%2F/\//g') DIRNAME=$(dirname $CONVERTED) if [ -f $DIRNAME ]; then mv $DIRNAME $DIRNAME.page; fi mkdir -p $DIRNAME if [ -f $DIRNAME.page ]; then mv $DIRNAME.page $DIRNAME/$(basename $DIRNAME); fi mv $FILE $CONVERTED done 

和我使用的testing数据(在一个空的目录中),在运行上面的之前:

 touch Test; touch Test%2FA%2F1; touch Test%2FA%2F2; touch Test%2FB 

好的,这是一个bash方法来做到这一点。 不是万无一失的,但又快又脏。

 对于$(ls | grep“%2F”)中的FILE
做
 CONVERTED = $(echo $ FILE | sed -e's /%2F / \ //')
 mkdir -p $(dirname $ CONVERTED)
 mv $ FILE $ CONVERTED
 DONE