여러 디렉터리의 여러 파일을 소스 상대 대상으로 이동

여러 디렉터리의 여러 파일을 소스 상대 대상으로 이동

다음과 같은 파일 계층 구조가 있습니다.

dir
├── dirA
│   └── snapshot
│       └── subdir1
│           └── file1
└── dirB
    └── snapshot
        └── subdir2
            └── file2

단일 명령으로 각 스냅샷/하위 디렉터리에서 스냅샷의 상위 디렉터리로 파일을 이동하고 싶습니다. 그것은 다음과 같습니다:

dir
├── dirA
│   └── file1
│   └── snapshot
│       └── subdir1
└── dirB
    └── file2
    └── snapshot
        └── subdir2

mv dir/*/snapshot/*/* ../../나는 이것을 시도했지만 ../../대상 부분이 작업 디렉토리에 상대적이기 때문에 분명히 작동하지 않습니다.

bash 명령을 사용할 수 있습니까(나는 bash 스크립트 한 줄을 작성한 적이 없기 때문에)?

답변1

@Don_Christ의 기민한 관찰을 바탕으로 이 답변은 하위 쉘을 저장하도록 편집되었습니다.

for i in dir/*/snapshot; do
     mv "$i"/*/* "$i"/..
done

관련 정보