대상 디렉터리에 존재하지 않는 폴더만 이동하세요.

대상 디렉터리에 존재하지 않는 폴더만 이동하세요.

대상 디렉터리에 아직 존재하지 않는 Linux 서버의 폴더를 이동하는 방법을 찾고 있습니다.

예:

대상 디렉토리

folder1
folder2
folder3
folder4

소스 코드 디렉토리

folder1
folder2
folder5
folder6
folder7

folder1원본 디렉터리 에서 folder2대상 디렉터리의 폴더를 덮어쓰고 싶지 않습니다 . 원본 디렉터리의 내용은 대상 디렉터리의 내용 folder1과 다를 수 있지만 folder2이러한 변경 사항이 복사되는 것을 원하지 않습니다.

이는 CentOS 7 서버에 있으며 작업에 필요한 모든 도구를 허용합니다.

이동하지 않을 폴더 목록은 동적이므로 정적으로 설정하고 싶지 않습니다.

답변1

소스의 각 디렉토리를 통해 루프를 설정하여 이를 수행할 수 있으며, 대상에 해당 이름의 디렉토리가 없으면 이동됩니다: bourne snippit:

for dir in `cd "$sourcedir" ; ls -1F | grep '/'`
do
  if [ ! -d "${targetdir}/${dir}" ]
  then
    mv "$dir" "${targetdir}/"
  fi
done

소스의 디렉터리와 이름이 같은 경우 대상의 파일이 손상되거나 덮어쓰게 됩니다. 강력해지기를 원한다면 몇 가지 추가 검사를 추가해야 합니다.

관련 정보