내가 직면한 문제는 수천 개의 하위 디렉터리가 있는 디렉터리가 있고 각 하위 디렉터리에는 더 많은 하위 디렉터리가 포함되어 있으며 모든 하위 디렉터리에는 내부에 이미지가 있다는 것입니다.
나는 수천 가지를 가지고 있습니다 :
/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