파일이 이미 존재하는 경우이를 제거하는 쉘 스크립트
파일에 데이터를 저장하는 일부 작업을하고 있습니다. 그러나 스크립트를 실행할 때마다 이전 파일에 추가됩니다.
파일이 이미 존재하는 경우 파일을 제거하는 방법에 대한 도움말이 필요합니다.
파일이 있는지 확인하지 말고 제거하십시오.
rm -f /p/a/t/h
# or
rm /p/a/t/h 2> /dev/null
파일이 존재하지 않으면 두 번째 명령이 실패하고 (0이 아닌 종료 상태를 반환) 첫 번째 옵션 은 -f
(short for --force
) 옵션 으로 인해 성공 합니다. 상황에 따라 중요한 세부 사항이 될 수 있습니다.
그러나 파일에 추가하는 경우 스크립트가 >>
파일로 파일을 리디렉션 하는 데 사용 하기 때문일 가능성이 큽니다 . 그냥 교체 >>
와 함께 >
. 코드를 제공하지 않았기 때문에 말하기가 어렵습니다.
과 같은 작업을 수행 할 수test -f /p/a/t/h && rm /p/a/t/h
있지만 그렇게하는 것은 완전히 의미가 없습니다. 테스트가 true를 리턴 할 수도 있지만 / p / a / t / h는 제거하기 전에 존재하지 않거나 테스트가 실패하고 / p / a / t / h가 작성됩니다. 존재하지 않을 것으로 예상되는 다음 명령을 실행하기 전에. 이것을 시도하는 것은 고전적인 경쟁 조건입니다. 하지마
내가 사용한 또 다른 한 줄 명령은 다음과 같습니다.
[ -e file ] && rm file
이것을 사용할 수 있습니다 :
#!/bin/bash
file="file_you_want_to_delete"
if [ -f $file ] ; then
rm $file
fi
파일이 존재하는지 여부를 확인하는 단계를 무시하려면 상당히 쉬운 명령을 사용하면 파일이 존재하면 파일을 삭제하고 존재하지 않는 경우 오류를 발생시키지 않습니다.
rm -f xyz.csv
이런 식으로 작동합니다
#!/bin/sh
if [ -fe FILE ]
then
rm FILE
fi
-f 일반 파일인지 확인
-e 파일이 존재하는지 확인
자세한 내용 은 if 소개
편집 : -f와 함께 사용되는 -e는 중복이므로 -f 만 사용하면 작동합니다.
파일이 이미 존재하는 경우 파일을 제거하는 하나의 라이너 셸 스크립트 (Jindra Helcl의 답변에 따라) :
[ -f file ] && rm file
또는 변수와 함께 :
#!/bin/bash
file="/path/to/file.ext"
[ -f $file ] && rm $file
if [ $( ls <file> ) ]; then rm <file>; fi
또한 >
대신 출력을 리디렉션 >>
하면 이전 파일을 덮어 씁니다.
참고 URL : https://stackoverflow.com/questions/31318068/shell-script-to-remove-a-file-if-it-already-exist
'programing tip' 카테고리의 다른 글
Homebrew의 PATH를 수정하는 방법? (0) | 2020.06.13 |
---|---|
Django가 ONCE 만 시작할 때 코드를 실행 하시겠습니까? (0) | 2020.06.13 |
문자열을 정규식으로 보간 (0) | 2020.06.13 |
가변 길이 문자열에 대한 더 나은 유사성 순위 알고리즘 (0) | 2020.06.13 |
Enum에서 문자열을 검색하고 Enum을 반환 (0) | 2020.06.13 |