复制同名文件

复制同名文件

我有目录

--dir1
    image1
    image2
    image3
--dir2
    image1
    image2
    image3
--dir3
    image1
    image2
    image3

我想将所有目录中的所有文件(具有相同名称)复制到具有新名称的新目录中,并按顺序从 1 到最后编号...

我该怎么做?

这些文件是从旧胶片扫描的图像,我需要将它们添加到数字胶片中。他们有数千个......

答案1

使用bashshell 将文件复制到具有新名称的目录,destdir格式nnnnnn.jpgn某个数字。

我们假设我们想要复制的所有文件都与单个通配模式匹配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*如果您对结果满意,请删除这些目录。

相关内容