좀 더 명확하게 설명하기 위해 문구를 편집하고 변경했습니다. dirA와 dirB 모두에 .dm4 파일이 있습니다. 내 참조 폴더는 dirA이고 dirB에 있는 dirA의 누락된 .dm4 파일을 모두 나열한 다음 디렉터리 A의 기존 .dm4와 함께 누락된 모든 .dm4 파일을 디렉터리 C에 게시하려고 합니다. 내 dirA 및 dirB에 있을 수 있는 .dm4를 놓치지 마세요.
답변1
몇 가지 가정을 해보자:
- 너의 껍질은
bash
- 당신의카탈로그 A예
dirA
- 당신의카탈로그 B예
dirB
- 당신의디렉토리 C아직 존재하지 않지만 이름이 지정될 예정입니다.
dirC
- 관심 있는 모든 파일은 이 디렉터리에 있거나 이 디렉터리에 중복되어 있을 수 있습니다
dirA
.dirB
내가 생각할 수 있는 가장 간단한 방법은 다음과 같습니다.
rm -rf dirC; mkdir dirC
cp -p dirB/*.dm4 dirC/
cp -p dirA/*.dm4 dirC/
diff <(ls dirA) <(ls dirB)
그러면 모든 .dm4 파일이 저장되고 두 디렉터리 목록이 dirC
생성됩니다 .diff
이보다 더 자세한 정보가 필요하시면질문을 수정하세요자세한 세부 사항.
고쳐 쓰다:
다음 파일이 있다고 가정합니다.
$ ls -1 dir{A,B}/*
dirA/apple.dm4
dirA/banana.dm4
dirA/date.dm4
dirA/fig.dm4
dirB/apple.dm4
dirB/elderberry.dm4
dirB/fig.dm4
dirB/grape.dm4
dirB/huckleberry.dm4
일부 파일은 중복되고 일부는 에만 있고 dirA
일부는 에만 있습니다 dirB
. cherry.dm4
가치 있는 점은 두 디렉토리 모두에 파일이 없다는 것입니다.
또한 foo.sh 스크립트가 있다고 가정합니다.
$ cat << EOF > foo.sh; chmod 755 foo.sh
#!/usr/bin/env bash
rm -rf dirC; mkdir dirC
cp -p dirB/*.dm4 dirC/
cp -p dirA/*.dm4 dirC/
diff <(ls dirA) <(ls dirB)
EOF
실행하면 foo.sh
다음이 생성됩니다.
$ ./foo.sh
2,3c2
< banana.dm4
< date.dm4
---
> elderberry.dm4
4a4,5
> grape.dm4
> huckleberry.dm4
$ ls -1 dirC/*
dirC/apple.dm4
dirC/banana.dm4
dirC/date.dm4
dirC/elderberry.dm4
dirC/fig.dm4
dirC/grape.dm4
dirC/huckleberry.dm4
출력에서는 누락된 .dm4 파일이 , 및 임을 diff
알려줍니다 . 모든 파일을 찾았습니다.dirA
elderberry
grape
huckleberry
dirA
또는 dirB
에 존재합니다 dirC
.
답변2
dirA의 모든 파일을 dirC로 복사합니다.
cp dirA/*.dm4 dirC
그런 다음 dirB의 모든 파일을 복사하고 dirC의 기존 파일은 건너뜁니다.
cp -n dirB/*.dm4 dirC/
매뉴얼 페이지 cp
:
-n, --no-clobber do not overwrite an existing file (overrides a previous -i option)
참고: -n
파일 이름만 확인됩니다. 버전을 확인하려면 -u
pdate 옵션이 흥미로울 수 있습니다.