Вы можете использовать цикл for, чтобы упростить это. я использовал dirname $ tiem / .., чтобы поднять один уровень, и mindepth, чтобы ограничить эффект одним уровнем.
localhost$ tree . └── temp ├── folder1 │ ├── subfolder1 │ │ └── file1 │ └── test1.txt ├── folder2 │ ├── subfolder2 │ │ └── file2 │ └── test2.txt └── folder3 ├── subfolder3 │ └── file3 └── test3.txt 7 directories, 6 files /tmp/foo/new localhost$ for item in `find . -mindepth 4 -type f`; do echo $item `dirname $item`/..; done ./temp/folder1/subfolder1/file1 ./temp/folder1/subfolder1/.. ./temp/folder3/subfolder3/file3 ./temp/folder3/subfolder3/.. ./temp/folder2/subfolder2/file2 ./temp/folder2/subfolder2/..
После переезда это становится
localhost$ for item in `find . -mindepth 4 -type f`; do mv $item `dirname $item`/..; done /tmp/foo/new localhost$ tree . └── temp ├── folder1 │ ├── file1 │ ├── subfolder1 │ └── test1.txt ├── folder2 │ ├── file2 │ ├── subfolder2 │ └── test2.txt └── folder3 ├── file3 ├── subfolder3 └── test3.txt 7 directories, 6 files /tmp/foo/new localhost$
Надеюсь, это поможет.