LINUX.ORG.RU

История изменений

Исправление legolegs, (текущая версия) :

Ну если файлов вот прямо много, то можно так (это одна команда, копировать в консоль целиком):

find -type d -name snp -execdir sh -c '
    cd "$1";
    find -mindepth 1 -maxdepth 1 -exec mv -t ../.. \{\} +;
    cd ../..;
    rmdir snapshots/snp snapshots
' -- {} \; -prune

Проверка:

# mkdir -p keyspace{1,2,3}/table{1,2,3}/snapshots/snp/dir; touch keyspace{1,2,3}/table{1,2,3}/snapshots/snp/{,dir/}file;
# tree
.
├── keyspace1
│   ├── table1
│   │   └── snapshots
│   │       └── snp
│   │           ├── dir
│   │           │   └── file
│   │           └── file
│   ├── table2
│   │   └── snapshots
│   │       └── snp
│   │           ├── dir
│   │           │   └── file
│   │           └── file
│   └── table3
│       └── snapshots
│           └── snp
│               ├── dir
│               │   └── file
│               └── file
├── keyspace2
│   ├── table1
│   │   └── snapshots
│   │       └── snp
│   │           ├── dir
│   │           │   └── file
│   │           └── file
│   ├── table2
│   │   └── snapshots
│   │       └── snp
│   │           ├── dir
│   │           │   └── file
│   │           └── file
│   └── table3
│       └── snapshots
│           └── snp
│               ├── dir
│               │   └── file
│               └── file
└── keyspace3
    ├── table1
    │   └── snapshots
    │       └── snp
    │           ├── dir
    │           │   └── file
    │           └── file
    ├── table2
    │   └── snapshots
    │       └── snp
    │           ├── dir
    │           │   └── file
    │           └── file
    └── table3
        └── snapshots
            └── snp
                ├── dir
                │   └── file
                └── file

39 directories, 18 files

# find -type d -name snp -execdir sh -c 'cd "$1"; find -mindepth 1 -maxdepth 1 -exec mv -t ../.. \{\} +; cd ../..; rmdir snapshots/snp snapshots' -- {} \; -prune
# tree
.
├── keyspace1
│   ├── table1
│   │   ├── dir
│   │   │   └── file
│   │   └── file
│   ├── table2
│   │   ├── dir
│   │   │   └── file
│   │   └── file
│   └── table3
│       ├── dir
│       │   └── file
│       └── file
├── keyspace2
│   ├── table1
│   │   ├── dir
│   │   │   └── file
│   │   └── file
│   ├── table2
│   │   ├── dir
│   │   │   └── file
│   │   └── file
│   └── table3
│       ├── dir
│       │   └── file
│       └── file
└── keyspace3
    ├── table1
    │   ├── dir
    │   │   └── file
    │   └── file
    ├── table2
    │   ├── dir
    │   │   └── file
    │   └── file
    └── table3
        ├── dir
        │   └── file
        └── file

21 directories, 18 files

Исправление legolegs, :

Ну если файлов вот прямо много, то можно так (это одна команда, копировать в консоль целиком):

find -type d -name snp -execdir sh -c '
    cd "$1";
    find -mindepth 1 -maxdepth 1 -exec mv -t ../.. \{\} +;
    cd ../..;
    rmdir snapshots/snp snapshots
' -- {} \; -prune

Проверка:

# mkdir -p keyspace{1,2,3}/table{1,2,3}/snapshots/snp/dir; touch keyspace{1,2,3}/table{1,2,3}/snapshots/snp/{,dir/}file;
# tree
.
├── keyspace1
│   ├── snp
│   │   ├── dir
│   │   │   └── file
│   │   └── file
│   ├── table1
│   │   └── snapshots
│   ├── table2
│   │   └── snapshots
│   │       └── snp
│   │           ├── dir
│   │           │   └── file
│   │           └── file
│   └── table3
│       └── snapshots
│           └── snp
│               ├── dir
│               │   └── file
│               └── file
├── keyspace2
│   ├── snp
│   │   ├── dir
│   │   │   └── file
│   │   └── file
│   ├── table1
│   │   └── snapshots
│   ├── table2
│   │   └── snapshots
│   │       └── snp
│   │           ├── dir
│   │           │   └── file
│   │           └── file
│   └── table3
│       └── snapshots
│           └── snp
│               ├── dir
│               │   └── file
│               └── file
└── keyspace3
    ├── snp
    │   ├── dir
    │   │   └── file
    │   └── file
    ├── table1
    │   └── snapshots
    ├── table2
    │   └── snapshots
    │       └── snp
    │           ├── dir
    │           │   └── file
    │           └── file
    └── table3
        └── snapshots
            └── snp
                ├── dir
                │   └── file
                └── file

39 directories, 18 files
# find -type d -name snp -execdir sh -c 'cd "$1"; find -mindepth 1 -maxdepth 1 -exec mv -t ../.. \{\} +; cd ../..; rmdir snapshots/snp snapshots' -- {} \; -prune
# tree
.
├── keyspace1
│   ├── table1
│   │   ├── dir
│   │   │   └── file
│   │   └── file
│   ├── table2
│   │   ├── dir
│   │   │   └── file
│   │   └── file
│   └── table3
│       ├── dir
│       │   └── file
│       └── file
├── keyspace2
│   ├── table1
│   │   ├── dir
│   │   │   └── file
│   │   └── file
│   ├── table2
│   │   ├── dir
│   │   │   └── file
│   │   └── file
│   └── table3
│       ├── dir
│       │   └── file
│       └── file
└── keyspace3
    ├── table1
    │   ├── dir
    │   │   └── file
    │   └── file
    ├── table2
    │   ├── dir
    │   │   └── file
    │   └── file
    └── table3
        ├── dir
        │   └── file
        └── file

21 directories, 18 files

Исходная версия legolegs, :

Ну если файлов вот прямо много, то можно так:

find -type d -name snp -execdir sh -c '
    cd "$1";
    find -mindepth 1 -maxdepth 1 -exec mv -t ../.. \{\} +;
    cd ../..;
    rmdir snapshots/snp snapshots
' -- {} \; -prune

Проверка:

# mkdir -p keyspace{1,2,3}/table{1,2,3}/snapshots/snp/dir; touch keyspace{1,2,3}/table{1,2,3}/snapshots/snp/{,dir/}file;
# tree
.
├── keyspace1
│   ├── snp
│   │   ├── dir
│   │   │   └── file
│   │   └── file
│   ├── table1
│   │   └── snapshots
│   ├── table2
│   │   └── snapshots
│   │       └── snp
│   │           ├── dir
│   │           │   └── file
│   │           └── file
│   └── table3
│       └── snapshots
│           └── snp
│               ├── dir
│               │   └── file
│               └── file
├── keyspace2
│   ├── snp
│   │   ├── dir
│   │   │   └── file
│   │   └── file
│   ├── table1
│   │   └── snapshots
│   ├── table2
│   │   └── snapshots
│   │       └── snp
│   │           ├── dir
│   │           │   └── file
│   │           └── file
│   └── table3
│       └── snapshots
│           └── snp
│               ├── dir
│               │   └── file
│               └── file
└── keyspace3
    ├── snp
    │   ├── dir
    │   │   └── file
    │   └── file
    ├── table1
    │   └── snapshots
    ├── table2
    │   └── snapshots
    │       └── snp
    │           ├── dir
    │           │   └── file
    │           └── file
    └── table3
        └── snapshots
            └── snp
                ├── dir
                │   └── file
                └── file

39 directories, 18 files
# find -type d -name snp -execdir sh -c 'cd "$1"; find -mindepth 1 -maxdepth 1 -exec mv -t ../.. \{\} +; cd ../..; rmdir snapshots/snp snapshots' -- {} \; -prune
# tree
.
├── keyspace1
│   ├── table1
│   │   ├── dir
│   │   │   └── file
│   │   └── file
│   ├── table2
│   │   ├── dir
│   │   │   └── file
│   │   └── file
│   └── table3
│       ├── dir
│       │   └── file
│       └── file
├── keyspace2
│   ├── table1
│   │   ├── dir
│   │   │   └── file
│   │   └── file
│   ├── table2
│   │   ├── dir
│   │   │   └── file
│   │   └── file
│   └── table3
│       ├── dir
│       │   └── file
│       └── file
└── keyspace3
    ├── table1
    │   ├── dir
    │   │   └── file
    │   └── file
    ├── table2
    │   ├── dir
    │   │   └── file
    │   └── file
    └── table3
        ├── dir
        │   └── file
        └── file

21 directories, 18 files