확장자(.gz)가 포함된 디렉터리의 파일 이름을 인쇄하려고 합니다. 현재 절대 경로를 인쇄하는 다음 쉘 스크립트가 있습니다. 파일 이름만 인쇄하고 싶습니다.
누구든지 이것에 대해 조언을 할 수 있습니까? 나는 다양한 접근법을 시도했습니다.
#!/bin/bash
sourceFolder=/Users/rojadhanavath/Desktop/app/logs/*.gz
sleepTimeinMinutes=200
cd $sourceFolder
for f in $sourceFolder do
echo " printing the file name $f" done
현재 출력은 다음과 같습니다:
printing the file name
/Users/rojadhanavath/Desktop/app/logs/app-json.log copy 10.gz
printing the file name
/Users/rojadhanavath/Desktop/app/logs/app-json.log copy 11.gz
printing the file name
/Users/rojadhanavath/Desktop/app/logs/app-json.log copy 12.gz
printing the file name
/Users/rojadhanavath/Desktop/app/logs/app-json.log copy 2.gz printing
the file name /Users/rojadhanavath/Desktop/app/logs/app-json.log copy
3.gz
나는 단지 파일 이름을 원합니다:
예를 들어app-json.log copy 10.gz
답변1
다음 기본 이름을 사용할 수 있습니다 $f
.
for f in $sourceFolder; do
echo " printing the file name $(basename $f)"
done
또는 이미 this 를 사용했으므로 cd $sourceFolder
다음과 같이 작동합니다.
for f in *.gz; do
echo " printing the file name $f"
done
답변2
정답은 @laktak 입니다. 하지만 여기 또 다른 방법이 있습니다:
for f in "$sourceFolder"; do
echo " printing the file name ${f##*/}"
done
답변3
파일 확장자 부분은 간단합니다. 그와 같은 일은 없다. 이 개념을 처리하는 데 도움이 되는 도구(예 basename
: )가 있지만 존재하지 않으므로 무시하십시오. 필요한 경우 이 도구를 사용하십시오 dirname
.
예를 들어
echo " printing the file name $(dirname "$f")"