쉘 스크립트를 사용하여 특정 접두어로 시작하는 파일이 디렉토리에 존재하는지 테스트하는 방법 [닫기]

쉘 스크립트를 사용하여 특정 접두어로 시작하는 파일이 디렉토리에 존재하는지 테스트하는 방법 [닫기]

"ant"로 시작하는 파일이 디렉토리에 존재하는지 테스트해야 합니다. 파일이 있으면 삭제해야 합니다. 지금 제가 사용하고 있는 명령어는

test -e $FILE_PATH/$FILE_NAME

나는 정의했다

FILE_NAME="ant"

FILE_NAME 뒤에 *를 추가하면 작동하지 않습니다.

답변1

그러한 파일이 하나만 존재하는 경우 이를 삭제할 수 있는 이식 가능한 방법이 있습니다.

set -- "${FILE_PATH}/${FILE_NAME}"*
[ $# -eq 1 -a -e "$1" ] && rm -- "$1"

내가 보기에는 "ant" 파일이 얼마나 많이 존재하는지 상관하지 않지만 작업이 끝나면 해당 파일(모두)이 사라지도록 하려면 다음을 수행하십시오.

rm -f "${FILE_PATH}/${FILE_NAME}"*

- 이 방법으로 해당 파일이 없으면 rm은 (강제적으로 조용하게) 아무 작업도 수행하지 않지만 해당 파일이 (1개 이상!) 있으면 rm삭제됩니다.

답변2

이를 수행하는 또 다른 방법은 다음과 같습니다.

-sh-4.1$ dir=$(pwd)  ; filename="ant" 

if (( $(shopt -s nullglob; set -- ${dir}/${filename}*;  echo $#) > 0 ));  then rm
${dir}/${filename}* ; fi    

shopt -s nullglob: 디렉터리가 비어 있으면 주석이 반환되도록 합니다.

set -- ${dir}/${filename}* :위치 매개변수를 설정합니다.

$#: 위치 매개변수의 개수를 반환합니다. rm 실행 조건

선형으로서:

1$ dir=$(pwd) ; filename="ant" ;  if (( $(shopt -s nullglob; set -- ${dir}/${filename}*;  echo $#) > 0 )); then rm     ${dir}/${filename}* ; fi     

관련 정보