This question already has answers here:
Closed 2 years ago.
Batch renaming files with Bash
(10个答案)
我想把一个有子目录的目录中的文件重命名为父目录名+序列号。
例如:
设计结果:
这是干运行,它将显示要运行的
展开形式:
(10个答案)
我想把一个有子目录的目录中的文件重命名为父目录名+序列号。
例如:
hello-images/
├── first-black
│ ├── full_b200056_m.png
│ ├── full_b200056_x_DSC01973.JPG
│ ├── full_b200056_x_DSC01978.JPG
│ ├── full_b200056_x_DSC01988.JPG
│ ├── full_b200056_x_DSC01994.JPG
│ ├── full_b200056_x_DSC02003.JPG
├── second-atlas
│ ├── full_b200035_m1.png
│ ├── full_b200035_x_3926.JPG
│ ├── full_b200035_x_3928.JPG
│ ├── full_b200035_x_3931.JPG
│ ├── full_b200035_x_3944.JPG
设计结果:
hello-images/
├── first-black
│ ├── first-black_1.png
│ ├── first-black_2.JPG
│ ├── first-black_3.JPG
│ ├── first-black_4.JPG
│ ├── first-black_5.JPG
│ ├── first-black_6.JPG
├── second-atlas
│ ├── second-atlas_1.png
│ ├── second-atlas_2.JPG
│ ├── second-atlas_3.JPG
│ ├── second-atlas_4.JPG
│ ├── second-atlas_5.JPG
最佳答案
从hello-images
目录中,执行以下操作:
for d in */; do i=1; for f in "$d"/*.*; do echo mv -- "$f" "$d${d%/}_${i}.${f##*.}"; ((i++)); done; done
这是干运行,它将显示要运行的
mv
命令。如果对所做的更改满意,请删除echo
以执行实际操作:for d in */; do i=1; for f in "$d"/*.*; do mv -- "$f" "$d${d%/}_${i}.${f##*.}"; ((i++)); done; done
展开形式:
for d in */; do
i=1
for f in "$d"/*.*; do
mv -- "$f" "$d${d%/}_${i}.${f##*.}"
((i++))
done
done
关于linux - 将图像批量重命名为文件夹名称+序列号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40808695/
10-14 03:19