모든 파일을 하위 디렉터리에서 상위 디렉터리로 이동

모든 파일을 하위 디렉터리에서 상위 디렉터리로 이동

다음과 같은 디렉토리 구조가 있습니다.

├── Tom
│   └── c
│       └── 2
│           ├── file.jpg
│           └── text.txt
└── Sam
    ├── 1
    │   └── c
    │       └── music.aac
    ├── E
    │   └── 9
    │       └── pic.jpg
    └── b
        ├── 9
        │   └── sound.aac
        └── d
            └── book.doc

하나의 명령을 사용하여 다양한 하위 폴더의 모든 파일을 기본 상위 폴더(Tom, Sam 등)로 이동한 다음 빈 하위 폴더를 모두 삭제하고 싶습니다. 어떻게 해야 하나요?

감사해요

답변1

왜 단 하나의 라이너 여야했는지 잘 모르겠습니다. 하지만 가능성이 있습니다. 주어진 디렉토리 트리에서 모든 파일을 찾아 각 파일을 두 디렉토리 위로 이동합니다.

find -type f | while read; do mv "$REPLY" "$(dirname $REPLY)/../../"; done

이 명령은 주어진 디렉토리 구조에 완벽하게 작동하고 다른 경우를 고려하지 않으므로 주의해서 사용하십시오(예: 표시된 리프 디렉토리의 파일뿐만 아니라 모든 디렉토리에서 파일을 이동합니다).

답변2

어때요?

find Tom Sam -type f | while read FN; do echo mv "$FN" "${FN%%/*}"; done

관련 정보