ディレクトリがあります
--dir1
image1
image2
image3
--dir2
image1
image2
image3
--dir3
image1
image2
image3
すべてのディレクトリのすべてのファイル(同じ名前を持つ)を新しい名前の新しいディレクトリにコピーし、1から最後まで順番に番号を付けたいと思います。
どうすればいいですか?
このファイルは古いフィルムからスキャンした画像なので、デジタルフィルムに追加する必要があります。何千ものあります…
答え1
シェルを使用して、特定の数値形式でbash
新しい名前のディレクトリにファイルをコピーします。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*
結果が満足な場合は、そのディレクトリを削除してください。