일련의 파일을 ID에 따라 다른 폴더로 이동하고 싶지만 파일을 이동하려는 폴더가 존재하고 고유한지 확인하고 싶습니다.
이러한 폴더는 이름의 첫 번째 부분에 일치하는 ID가 있지만 이름(ID)에도 설명이 있습니다.~해야 한다고유하지만 이 예외를 방지하고 싶습니다):
0123-app1
4567-app2
2020-app3
0123-shouldntbehere
4567
ID가 있는 파일을 디렉토리로 이동하고 싶습니다 4567-app2
.
이름에 설명이 있으므로 올바른 폴더를 찾으려면 와일드카드를 사용해야 합니다. 이제 변수에 이름을 표시하려고 시도하지만 해당 이름이 고유한지 또는 존재하는지 확인하는 데 도움이 되지 않습니다.
APP_PATH=`echo $APP_ID*`
올바른 폴더를 찾고 고유한지 확인하려면 무엇을 사용하라고 제안하시겠습니까?
감사해요
답변1
내가 구현한 방식은 if
오류 코드 검사가 포함된 명령문을 사용하는 것이었습니다. [ -d ...]
와일드카드 분해 시 여러 매개변수(폴더 이름)가 전달되면 오류가 발생합니다.또는파일이 존재하지 않는 경우. ls
in을 사용하면 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