리눅스 복사는 하되 덮어쓰지 않는 방법은?
하고싶어cp
기존 파일이 복사된 파일보다 오래된 경우에도 디렉터리를 덮어쓰지 않습니다.그리고 저는 이것이 크론탭 배시 스크립트의 일부가 될 것이기 때문에 완전히 대화형이 아닌 것으로 하고 싶습니다.아이디어 있어요?
man 페이지에서 가져온 것:
-n, --no-clobber
do not overwrite an existing file (overrides a previous -i option)
예:
cp -n myoldfile.txt mycopiedfile.txt
사용을 고려해 보십시오.
rsync -a -v --ignore-existing src dst
댓글에 따라rsync -a -v src dst
기존 파일을 업데이트하므로 올바르지 않습니다.
cp -n
당신이 원하는 것입니다.맨 페이지를 참조하십시오.
이것은 RedHat에서 작동합니다.
false | cp -i source destination 2>/dev/null
업데이트하는 것과 덮어쓰지 않는 것은 다릅니다.
(RedHat의 나처럼) 'n' 옵션이 없는 사용자는 사용할 수 있습니다.cp -u
원본이 기존 파일보다 최신이거나 기존 파일이 없는 경우에만 파일을 씁니다.
[edit] 코멘트에서 언급했듯이, 이것은 오래된 파일을 덮어쓸 것이기 때문에 OP가 정확히 원했던 것은 아닙니다.세빙의 대답을 사용하세요.
Alpine Linux: 아래 답변은 단일 파일의 경우에만 해당됩니다. alpine에서cp -n
작동하지 않는(그리고)false | cp -i ...
또한) 그래서 제 경우에 작동하는 해결책은 다음과 같습니다.
if [ ! -f env.js ]; then cp env.example.js env.js; fi
위의 예에서 다음과 같은 경우env.js
파일이 존재하지 않는 경우 복사합니다.env.example.js
로.env.js
.
cp 일부 버전에는 --no-clobber 옵션이 없습니다.이 경우:
echo n | cp -vipr src/* dst
이것은 나에게 효과가 있습니다 yes n | cp -isrcdest.
언급URL : https://stackoverflow.com/questions/9392735/linux-how-to-copy-but-not-overwrite
'your programing' 카테고리의 다른 글
왜 큰 장고 쿼리 세트를 통해 반복하는 것이 막대한 양의 메모리를 소비합니까? (0) | 2023.05.22 |
---|---|
통합 윈도우즈 인증을 사용하여 로그인 프롬프트 수신 (0) | 2023.05.22 |
Bash에서 한 문자를 다른 문자로 바꿉니다. (0) | 2023.04.22 |
UITableView에서 구분자 전폭을 설정하는 방법 (0) | 2023.04.22 |
VS2010에서 퍼블리시를 사용하여 Windows Azure에서 웹 사이트를 퍼블리시할 수 없음 (0) | 2023.04.22 |