我有以下目录结构:
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
(又名rename
Debian/Ubuntu 和prename
RHEL/Centos):
perl-rename -n 's:([^/]+)/(.+).json:path/to/new/dir/$2_$1.json:' */*.json
替换-n
为-v
实际执行。