와일드카드를 사용하여 폴더 이름을 얻고 고유성을 확인하는 방법

와일드카드를 사용하여 폴더 이름을 얻고 고유성을 확인하는 방법

일련의 파일을 ID에 따라 다른 폴더로 이동하고 싶지만 파일을 이동하려는 폴더가 존재하고 고유한지 확인하고 싶습니다.

이러한 폴더는 이름의 첫 번째 부분에 일치하는 ID가 있지만 이름(ID)에도 설명이 있습니다.~해야 한다고유하지만 이 예외를 방지하고 싶습니다):

0123-app1
4567-app2
2020-app3
0123-shouldntbehere

4567ID가 있는 파일을 디렉토리로 이동하고 싶습니다 4567-app2.

이름에 설명이 있으므로 올바른 폴더를 찾으려면 와일드카드를 사용해야 합니다. 이제 변수에 이름을 표시하려고 시도하지만 해당 이름이 고유한지 또는 존재하는지 확인하는 데 도움이 되지 않습니다.

APP_PATH=`echo $APP_ID*`

올바른 폴더를 찾고 고유한지 확인하려면 무엇을 사용하라고 제안하시겠습니까?

감사해요

답변1

내가 구현한 방식은 if오류 코드 검사가 포함된 명령문을 사용하는 것이었습니다. [ -d ...]와일드카드 분해 시 여러 매개변수(폴더 이름)가 전달되면 오류가 발생합니다.또는파일이 존재하지 않는 경우. lsin을 사용하면 else어떤 상황이 발생했는지 알 수 있습니다(폴더가 여러 개 있는 경우 반환 코드는 0).

if [ -d ${ID}* ] 2>/dev/null; then
    echo "Folder exists and is unique"
else
    ls ${ID}* >/dev/null 2>&1
    if [ $? -ne 0 ]; then
        echo "No folder exists starting with ${ID}"
    else
        echo "More than one folder starting with ${ID}"
    fi
fi

관련 정보