중복 항목 이동, 병합 및 이름 바꾸기를 위한 Linux 명령

중복 항목 이동, 병합 및 이름 바꾸기를 위한 Linux 명령

디렉터리(하위 디렉터리 및 파일 포함)를 다른 디렉터리로 이동하려고 합니다. 일부 mv폴더는 파일이 동일한 디렉터리에 존재하기 때문에 병합되지 않습니다. 이는 소스 디렉터리에 있는 파일이 최신 버전이라 하더라도 이동하면 삭제되기 때문에 좋지 않습니다.

다음 명령이 필요합니다.

  1. 대상 디렉터리에 존재하지 않는 디렉터리를 이동합니다.
  2. 대상 디렉터리에 이미 존재하는 디렉터리를 병합합니다.
  3. 중복된 파일의 이름을 바꿉니다(예: file.txt이미 존재하는 경우 소스 파일의 이름을 로 바꿉니다 file(1).txt).

나는 이 모든 것을 처리하는 것을 찾지 못했습니다.

편집하다

다음 명령을 사용해 보았습니다.

mv -u [source] [destination]

대상에 존재하지 않는 디렉터리만 이동하며, 중복된 내용이 있는 디렉터리는 삭제된다고 생각합니다. 따라서 원본 디렉터리의 모든 최신 파일은 이동 시 손실됩니다. 대신 이러한 디렉터리를 병합하고 중복된 파일의 이름을 바꿔야 합니다. 내가 그것을 충분히 잘 설명했기를 바랍니다.

PS 이것은 터미널 명령으로 작성된 경우 가장 잘 작동합니다. 스크립트를 만든 경험이 없습니다.

도와주셔서 감사합니다!

답변1

파일이 생각했던 대로 이동하지 않을 수도 있습니다. -tor -T옵션 을 사용하는 것이 좋습니다 mv.

답변2

이것이 내가 필요한 것을 달성하기 위해 사용하게 된 것입니다. 완벽하지는 않지만 많은 디렉토리가 이동되었으므로 이동/병합이 99% 완료되었습니다.

먼저 "mv"를 사용하여 모든 디렉토리를 존재하지 않는 새로운 대상으로 이동했습니다. 각 대상 폴더에는 "a, b, c..."라는 레이블이 지정됩니다. "A"로 시작하는 각 소스 디렉터리를 해당 대상 디렉터리("a")로 이동하고 싶습니다.

mv -u /[source directory]/A* /[destination directory]/a && mv -u /[source directory]/B* /[destination directory]/b && so on and so on...

%가 이미 대상에 존재하므로 모든 디렉터리를 이동하지는 않습니다. 다음으로 rsync위와 매우 유사한 명령을 실행합니다 .

rsync --progress --remove-source-files -arvu /[source directory]/A* /[destination directory]/a && rsync --progress --remove-source-files -arvu /[source directory]/B* /[destination directory]/b && and so on and so on... 

내 대상 디렉토리는 AZ와 0-9였으므로 문자와 숫자를 변경하면서 이 명령을 계속해서 실행하고 명령을 &&. 명령 .

이를 달성하기 위해 다음 명령을 실행했습니다.

find . -type d -empty -print -delete

이는 rsync가 남긴 빈 디렉토리를 처리합니다. rsync를 통해 이 모든 작업을 수행할 수 있나요? 나는 모른다. 저는 새로운 것을 배우기 위해 이곳에 온 초보자입니다.

내가 말했듯이 완벽하지는 않지만 나에게는 효과가 있었고 이것이 다른 사람들에게도 도움이 되기를 바랍니다.

관련 정보