将不同目录中的同名文件复制到新目录中,同时重命名它们

将不同目录中的同名文件复制到新目录中,同时重命名它们

我有以下目录结构:

top_dir
   |________AA
             |_______f1.json
             |_______f2.json
   |________BB
             |_______f1.json
             |_______f2.json
   |________CC
             |_______f1.json
             |_______f2.json

我想编写一个脚本/命令行命令来获取以下结构

new_dir
       |_______f1_AA.json
       |_______f2_AA.json
       |_______f1_BB.json
       |_______f2_BB.json
       |_______f1_CC.json
       |_______f2_CC.json

我尝试阅读一些重命名文件和复制移动文件的解决方案。但是,我还无法解决这个问题。谢谢!

答案1

使用循环:

mkdir /path_to/new_dir
cd /path_to/top_dir

for i in */*.json; do 
  cp "$i" "/path_to/new_dir/$(basename "$i" .json)_$(dirname "$i").json"
done
  • $(basename "$i" .json)打印不带后缀的文件名,例如f1
  • $(dirname "$i")打印目录名称,例如AA

答案2

对于 Larry Wall perl-rename(又名renameDebian/Ubuntu 和prenameRHEL/Centos):

perl-rename -n 's:([^/]+)/(.+).json:path/to/new/dir/$2_$1.json:' */*.json

替换-n-v实际执行。

相关内容