从多个目录中删除中间字符然后重命名子目录中的文件以包含目录+文件名的脚本

script to remove middle character from multiple directories then rename files in subdirectories to include directory + file name

我有两个目标正在努力实现,需要一些帮助。

概述如下:

有数百个 folders/directories 随机数 ( 5555#5555 ) 包含相同的 001.pdf 文件。我愿意:

1: 删除每个 folder/directory

中的“#”符号

2: 重命名 001.pdf 文件以包含新的文件夹编号和 001.pdf

期望的结果: 文件夹 5555#5555 变为 55555555 包含变为 55555555.001.pdf[=16= 的 001.pdf 文件]

希望这是有道理的,谢谢。

for f in *#*;
do
  newFolder=$(echo ${f//%})
  mv $f $newFolder
  newFile=$(printf $newFolder".001.pdf")
  mv $newFolder/001.pdf $newFolder/$newFile
done

这应该可以做到,尽管可能有更优雅的解决方案。如果要捕获没有 #.

的其他文件,请更改循环的正则表达式

所以更新:感谢您的建议。这就是我必须为我工作的东西。可能不是最好的方法,但是嘿。

  curdir=`pwd`
  for f in `find . -maxdepth 1 -type d -name "*#*" -print`;
  do
   echo "folder is $f"
    newFolder=`echo $f | sed 's/#//g'`
    echo mv $f $newFolder
    mv $f $newFolder
    echo newfolder is $newFolder
    cd $newFolder
    for file  in `find . -maxdepth 1 -type f -printf '%f\n'`; do
      echo "mv $file to ${newFolder}_$file"
      mv $file ${newFolder}_$file
    done
    cd $curdir
  done