경로 대신 디렉터리를 반복할 때 파일 이름만 가져오기

경로 대신 디렉터리를 반복할 때 파일 이름만 가져오기
$ script.sh -i /storage/testFile

-i저장소 경로입니다 /storage/testFile/.

testFile모든 것이 잘 진행되고 있지만 이 코드를 더 명확하게 만들고 출력 및 기타 검사를 위한 디렉터리를 추가하고 싶습니다 .

내 코드 조각은 다음과 같습니다

for f in $inDir/*.vcf; do
    if [ -f $f ]; #check if file is true or exists
    then
    if [   ${f: -4} == ".vcf" ] # check if the file ends with .vcf
        then
        convert2annovar.pl -format vcf4 "$f" > ./"$f".avinput  #run my code
     fi
    fi
done

질문:

echo $f반품 /storage/testFiles/test.vcf. test.vcf루프가 반복될 때만 얻는 방법은 무엇입니까 for?

답변1

다음을 사용해야 합니다 basename.

Synopsis

basename NAME [SUFFIX]    
basename OPTION 

Description

Print NAME with any leading directory components removed. If
specified, also remove a trailing SUFFIX.

그래서:

$ basename /storage/testFiles/test.vcf
test.vcf

또는 반대가 필요한 경우 다음을 사용할 수 있습니다 dirname.

$ dirname /storage/testFiles/test.vcf
/storage/testFiles

관련 정보