파일이 포함된 경우에만 디렉터리 콘텐츠를 한 수준 위로 이동합니다.

파일이 포함된 경우에만 디렉터리 콘텐츠를 한 수준 위로 이동합니다.

파일이 포함된 경우에만 디렉터리를 한 수준 위로 이동하는 방법입니다. 몇 가지 팁이 도움이 될 것입니다. 감사해요!

한 단계 위로 이동하는 예:

├── AAA
│   └── AAA1
│       ├── 001.jpg
│       ├── 002.jpg
│       ├── 003.jpg

그래서 최종 결과는 다음과 같습니다.

├── AAA1
│   ├── 001.jpg
│   ├── 002.jpg
│   ├── 003.jpg

한 레벨 위로 올라가는 또 다른 예는 다음과 같습니다.

├── AAA
│   └── BBB
│       └── DDD
│           └── 001.jpg
│       ├── 001.jpg
│       ├── 002.jpg
│       ├── 003.jpg

그래서 최종 결과는 다음과 같습니다.

├── BBB
│   └── DDD
│       └── 001.jpg
│   ├── 001.jpg
│   ├── 002.jpg
│   ├── 003.jpg

파일(및 하위 디렉터리)이 이미 한 수준 아래에 있으므로 무시할 예:

├── BBB
│   ├── CCC
│   ├── 001.jpg
│   ├── 002.jpg
│   ├── 003.jpg

빠르고 더러운 솔루션:

#!/bin/bash
for d in /mnt/g/test/* ; do
  if [[ -n $(find "$d" -maxdepth 1 -type f) ]]
  then
    echo ""
  else
    find "$d" -mindepth 1 -type d -execdir mv "{}" ./.. \;
  fi
done
find /mnt/g/test/* -type d -empty -delete

관련 정보