모든 하위 디렉터리의 내용을 해당 하위 디렉터리로 이동합니다.

모든 하위 디렉터리의 내용을 해당 하위 디렉터리로 이동합니다.

내가 직면한 문제는 수천 개의 하위 디렉터리가 있는 디렉터리가 있고 각 하위 디렉터리에는 더 많은 하위 디렉터리가 포함되어 있으며 모든 하위 디렉터리에는 내부에 이미지가 있다는 것입니다.

나는 수천 가지를 가지고 있습니다 :

/1056/7624/image.png

기본적으로 여기에서 7624 디렉터리를 삭제하여 다음과 같은 수천 개의 디렉터리를 만들고 싶습니다.

/1056/image.png

시도해 보았지만 mv */*/* */*정말 놀랐습니다. 터미널 명령을 사용하여 이 작업을 수행할 수 있습니까?

저는 50개의 이미지를 얻기 위해 50개의 디렉토리에 들어갈 필요 없이 이 다중 파일 업로더를 사용할 수 있도록 이렇게 하려고 합니다.

답변1

for dir in */*; do
  if [[ -d "$dir" ]]; then
    ( 
      cd "$dir"
      mv -n * ..
      cd ..
      rmdir "$( basename "$dir" )"
    )
  fi
done

중복된 파일이나 하위 디렉터리 이름은아니요이동되었으므로 이러한 경우 딥 디렉토리는아니요아직 파일이 포함되어 있기 때문에 제거되었습니다.

답변2

그러면 현재 디렉터리와 하위 디렉터리의 모든 파일이 현재 수준으로 이동됩니다. 숫자가 추가되어 동일한 이름을 가진 파일의 이름을 바꿉니다.

find ./ -type f -print -exec mv --backup=numbered {} . \;

그러면 당신은 모든 것을 얻을 수 있는지 확인할 수 있습니다

find ./ -mindepth 2 -type f

관련 정보