유형별로 파일을 디렉터리 및 하위 디렉터리에서 다른 디렉터리로 재귀적으로 이동하는 방법은 무엇입니까?

유형별로 파일을 디렉터리 및 하위 디렉터리에서 다른 디렉터리로 재귀적으로 이동하는 방법은 무엇입니까?

디렉터리 및 모든 하위 디렉터리에서 파일 형식을 이동하는 좋은 방법은 무엇입니까?

"/thisdir에 있는 모든 *.ogg를 /somedir로 재귀적으로 이동"하는 것과 같습니다. 나는 몇 가지를 시도했지만 최선을 다했습니다(여전히 그다지 좋지는 않았습니다).

find /thisdir -type f -name '*.ogg' -exec mv /somedir {} \;

각 파일 이름 앞에 각 줄을 반환합니다.

mv: cannot overwrite non-directory `/thisdir/*.ogg' with directory `/somedir'

답변1

다음과 함께 find를 사용할 수 있습니다.매개변수이를 위해

find /thisdir -type f -name "*.ogg" -print0 | xargs -0 -Imysongs mv -i mysongs /somedir

위 명령의 -I는 xargs에게 사용하려는 대체 문자열을 알려줍니다(그렇지 않으면 명령 끝에 인수를 추가합니다).

또는
명령에서 mv명령 뒤의 "{}"를 이동해 보세요.

find /thisdir -type f -name '*.ogg' -exec mv -i {} /somedir \;

답변2

zsh 또는 bash 4에서 모든 *.ogg파일을 다음 위치에 수집합니다 /somedir.

mv /thisdir/**/*.ogg /somedir

디렉터리 계층 구조를 재현하려면: (경고, 브라우저에 직접 입력하세요)

rsync -a --prune-empty-dirs --include='*/' --include='*.ogg' --exclude='*' /thisdir /somedir

답변3

find /thisdir -type f -name "*.ogg" -exec mv {} /somedir \;

당신은 mv의 매개변수를 바꿨습니다.

답변4

"디렉토리가 비어 있지 않습니다." 오류가 발생합니다. 이 문제를 해결하기 위해 다음을 실행합니다.

find . -name 'node_modules' -type d -prune -exec mkdir -p ./another/dir/{} \; -exec mv -i {} ./NODE_MODULES/{} \;

이렇게 하면 디렉터리 구조가 보존됩니다.

관련 정보