Linuxでコマンドラインを使用して複数のサブディレクトリ内の複数のファイルをゼロで埋める方法は?

Linuxでコマンドラインを使用して複数のサブディレクトリ内の複数のファイルをゼロで埋める方法は?

各フォルダ内に1000個以上のjpegを含む約200個のフォルダがあり、すべて4桁までゼロパディングが必要です。これらのフォルダの中には、より深い画像を含むサブディレクトリもあります。写真の名前はすべて異なります(たとえば、あるフォルダではImage_1.jpg、Image_11.jpgなどと呼ばれ、他のフォルダにはPhoto01.jpg、Photo02.jpgというファイルが含まれる場合があります)

.
├── folderA
│   ├── subfolder1
│   │   ├── Photo_1.jpg
│   │   └── Photo_11.jpg
│   └── subfolder2
│       ├── image001.jpg
│       ├── image002.jpg
│       └── image003.jpg
└── folderB
    ├── subfolder1
    │   ├── foto_01.jpg
    │   └── foto_01.jpg
    └── subfolder2
        ├── foto_01.jpg
        ├── foto_02.jpg
        └── foto_03.jpg

すべてのサブフォルダに移動して、ファイル名の数字0を4文字で埋めるコマンドを実行する方法を教えることができる人はいますか?

ベストアンサー1

使用perl rename:

rename -n --filename  's/\d+/sprintf("%04d",$&)/e' *.jpg

または再帰的に:

find . -type f -name "*.jpg" -exec rename -n --filename 's/\d+/sprintf("%04d",$&)/e' {} +
  • このフラグは、パスではなくファイル名のみが変更されることを保証します。そうでなければ、等の--filename結果が得られます。subfolder0001
  • -n出力が満足な場合は削除してください。

また、見ることができます

おすすめ記事