История изменений
Исправление 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