하위 폴더를 이동하지 않고 폴더의 모든 파일을 다른 폴더로 이동 [중복]

하위 폴더를 이동하지 않고 폴더의 모든 파일을 다른 폴더로 이동 [중복]

이라는 폴더가 있습니다 folder1. 여기에는 여러 개의 파일과 두 개의 하위 폴더가 있으며 subfolder1. subfolder2을( 를) folder1제거 subfolder2하고 싶습니다 subfolder1.

어떻게 해야 하나요?

답변1

find다음 을 사용할 수 있습니다 mv.

내 폴더 설정은 다음과 같습니다.

$ find folder1
folder1
folder1/subfolder2
folder1/subfolder2/i
folder1/subfolder2/h
folder1/subfolder2/g
folder1/subfolder1
folder1/subfolder1/f
folder1/subfolder1/e
folder1/subfolder1/d
folder1/c
folder1/b
folder1/a

a귀하의 사례를 시뮬레이션하기 위해 , bc다음을 이동하고 싶습니다 subfolder2.

$ find folder1 -maxdepth 1 -type f -exec mv "{}" folder1/subfolder2 \;

이제 다음을 보면 folder1:

$ find folder1
folder1
folder1/subfolder2
folder1/subfolder2/a
folder1/subfolder2/b
folder1/subfolder2/c
folder1/subfolder2/i
folder1/subfolder2/h
folder1/subfolder2/g
folder1/subfolder1
folder1/subfolder1/f
folder1/subfolder1/e
folder1/subfolder1/d

답변2

셸에서 folder1디렉터리가 아닌 파일(숨겨진 파일 제외)을 이동 하려면 다음을 수행할 수 있습니다.folder1/subfolder2zsh

mv folder1/*(^/) folder1/subfolder2/

subfolder1(분명히 subfolder2)을 제외하고 유형에 관계없이 모든 파일을 이동하려면 다음을 수행하십시오 .

set -o extendedglob # best in ~/.zshrc
mv folder1/^(subfolder1|subfolder2) folder1/subfolder2

숨겨진 파일도 이동하려면 Dglob 한정자를 추가하세요.

답변3

findxargs.read 를 사용하세요 man find xargs. 파일 이름이 어떻게 생겼는지(삽입 공백, 기타 흥미로운 문자) 지정하지 않았으므로 -print0.

find folder1 -maxdepth 1 -type f -print0 | \
    xargs -0 -r mv --target-directory=subfolder2

관련 정보