我有目录
--dir1
image1
image2
image3
--dir2
image1
image2
image3
--dir3
image1
image2
image3
我想将所有目录中的所有文件(具有相同名称)复制到具有新名称的新目录中,并按顺序从 1 到最后编号...
我该怎么做?
这些文件是从旧胶片扫描的图像,我需要将它们添加到数字胶片中。他们有数千个......
答案1
使用bash
shell 将文件复制到具有新名称的目录,destdir
格式nnnnnn.jpg
为n
某个数字。
我们假设我们想要复制的所有文件都与单个通配模式匹配dir*/image*
,就像您的示例一样。
#!/bin/bash
shopt -s nullglob
num=0
mkdir -p destdir || exit
for name in dir*/image*; do
num=$(( num + 1 ))
printf -v newname 'destdir/%.6d.jpg' "$num"
cp "$name" "$newname"
done
测试:
$ tree
.
|-- dir1
| |-- image1
| |-- image2
| |-- image3
| |-- image4
| `-- image5
|-- dir2
| |-- image1
| |-- image2
| |-- image3
| |-- image4
| `-- image5
|-- dir3
| |-- image1
| |-- image2
| |-- image3
| |-- image4
| `-- image5
`-- script
3 directories, 16 files
$ ./script
$ tree
.
|-- destdir
| |-- 000001.jpg
| |-- 000002.jpg
| |-- 000003.jpg
| |-- 000004.jpg
| |-- 000005.jpg
| |-- 000006.jpg
| |-- 000007.jpg
| |-- 000008.jpg
| |-- 000009.jpg
| |-- 000010.jpg
| |-- 000011.jpg
| |-- 000012.jpg
| |-- 000013.jpg
| |-- 000014.jpg
| `-- 000015.jpg
|-- dir1
| |-- image1
| |-- image2
| |-- image3
| |-- image4
| `-- image5
|-- dir2
| |-- image1
| |-- image2
| |-- image3
| |-- image4
| `-- image5
|-- dir3
| |-- image1
| |-- image2
| |-- image3
| |-- image4
| `-- image5
`-- script
4 directories, 31 files
始终在备份的数据上测试运行此类操作。
dir*
如果您对结果满意,请删除这些目录。