다음과 같은 사람 이름이 포함된 파일이 있습니다.
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
하고 출력 줄이 슬래시로 시작하는 것을 원하지 않기 때문에 접두사 슬래시를 제거했습니다.