Рекурсивно каталоги числа

У меня есть следующая структура каталогов:

$ directory tree Data
Data
├── Mercury
├── Venus
├── Earth
│   ├── Australia
│   └── Asia
│     └── Japan
|       └── Hokkido   
├── Mars
    ├── HellasBasin
    └── SyrtisCrater

Как может переименовывать/нумеровать/маркировать все каталоги рекурсивно для получения результата, подобного следующему?

Data
    ├── 01
    ├── 02
    ├── 03
    │   ├── 031
    │   └── 032
    │     └── 0321
    |       └── 03211   
    ├── 04
        ├── 041
        └── 042

Идея состоит в том, чтобы переименовать целое дерево с новыми именами (числа, буквы или комбинация их). Они не делают необходимый, должны иметь маркировки как 03 211.

Заранее спасибо в течение Вашего времени.

2
задан 8 March 2018 в 21:48

1 ответ

Используя удар:

#! /bin/bash
rename_count ()
{
    count=1
    for i in *
    do
        new="$1$count"
        mv "$i" "$new"
        # if a directory, recurse into it.
        [[ -d "$new" ]] && (cd "$new"; rename_count "$new")
        ((count++))
    done
}
shopt -s nullglob
cd "$1"
rename_count ""

Первоначально:

$ tree foo
foo
├── a
│  ├── d
│  │  └── g
│  ├── e
│  │  └── g
│  └── f
│  └── g
├── b
│  ├── d
│  │  └── g
│  ├── e
│  │  └── g
│  └── f
│  └── g
└── c
    ├── d
    │  └── g
    ├── e
    │  └── g
    └── f
        └── g

12 directories, 9 files

Затем:

$ ./foo.sh foo
$ tree foo
foo
├── 1
│  ├── 11
│  │  └── 111
│  ├── 12
│  │  └── 121
│  └── 13
│  └── 131
├── 2
│  ├── 21
│  │  └── 211
│  ├── 22
│  │  └── 221
│  └── 23
│  └── 231
└── 3
    ├── 31
    │  └── 311
    ├── 32
    │  └── 321
    └── 33
        └── 331

12 directories, 9 files
6
ответ дан 2 December 2019 в 01:42

Другие вопросы по тегам:

Похожие вопросы: