파일 이름이 디렉토리에 있는지 확인하십시오.

파일 이름이 디렉토리에 있는지 확인하십시오.

다음과 같은 사람 이름이 포함된 파일이 있습니다.

Sam 
Tom
Dad
Jack

동일한 형식이 아닌 파일을 포함 name.txt하거나 포함하는 디렉토리가 있습니다 .name.zip

Dad.txt
Tom.zip
Jack.zip

샘을 찾는 방법이 디렉토리에 없나요?

이것이 내 생각이다:

input="people_name"

while IFS= read -r line
    do
    if [ -f "/my_files/${line}.zip"]|| [ -f "/my_files/${line}.txt" ] ; then
        echo "/${line} exists."
    else
        echo "/${line} does not exists."
    fi
done < "$input"

출력은 다음과 같아야 합니다.

Sam does not exist
Tom exists
Dad exists
Jack exists

그러나 터미널 출력은 다음과 같습니다.

Sam does not exist
Tom does not exists
Dad does not exists
Jack does not exists

답변1

my_files이 스크립트는 디렉토리 와 파일이 있는 디렉토리에서 실행될 때 작동합니다 people_name.

#!/bin/bash

input="people_name"

while IFS= read -r line

    do

    if [ -f "my_files/${line}.zip" ] || [ -f "my_files/${line}.txt" ] ; then
        echo "${line} exists."
    else
        echo "${line} does not exist."
    fi
done < "$input"

다음 입력 파일을 사용하십시오.

Sam
Tom
Dad
Jack

조정:

  • bash스크립트가 실행되어야 함을 나타내기 위해 첫 번째 줄에 "shebang"을 추가했습니다 .
  • if 문에 공백을 추가했습니다.
  • 루트 디렉터리에 해당 디렉터리가 없다고 생각 my_files하고 출력 줄이 슬래시로 시작하는 것을 원하지 않기 때문에 접두사 슬래시를 제거했습니다.

관련 정보