programing tip

파일이 이미 존재하는 경우이를 제거하는 쉘 스크립트

itbloger 2020. 6. 13. 10:26
반응형

파일이 이미 존재하는 경우이를 제거하는 쉘 스크립트


파일에 데이터를 저장하는 일부 작업을하고 있습니다. 그러나 스크립트를 실행할 때마다 이전 파일에 추가됩니다.

파일이 이미 존재하는 경우 파일을 제거하는 방법에 대한 도움말이 필요합니다.


파일이 있는지 확인하지 말고 제거하십시오.

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

반응형