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

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

我有一堆导出的文件(从我的跟踪维基百科中的名称类似于,ParentPage%2FSubPage但实际上应该类似于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

以及运行上述程序之前我使用的测试数据(在空目录中):

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

答案1

好的,这里有一个 Bash 方法可以做到这一点。虽然不是万无一失的,但快速而简单。

对于 $(ls | grep "%2F") 中的文件
已转换 = $(echo $FILE | sed -e 's/%2F/\//')
mkdir -p $(目录名 $CONVERTED)
mv $文件$CONVERTED
完毕



相关内容