.desktop 파일에서 아이콘 경로를 추출하고 있습니다.
때로는 파일에 파일의 절대 경로가 포함되어 있는 경우도 있습니다.
Icon=/snap/spotify/41/usr/share/spotify/icons/spotify-linux-128.png
다른 경우에는 파일 이름만 있고 확장자는 없습니다.
Icon=spotify-linux-128
현재 /usr/share/icons/hicolor 폴더에서 아이콘 이름을 검색하고 있습니다. 그러나 아이콘 경로가 절대 경로이고 파일을 가리키는 경우 find가 잘못된 위치를 찾고 있기 때문에 결과가 나오지 않습니다.
내 bash 스크립트에 문자열이 이미지인지 알 수 있는 방법이 있나요?
나는 확인하려고합니다 :
file $iconpath
그러나 경로가 존재하지 않는다면 분명히 뭔가 잘못될 것입니다.
더 좋은 방법이 있나요?
당신은 무엇을 하시겠습니까?
답변1
@muru가 지적했듯이.
이것확실히해결책은 문자열이 /로 시작하는지 확인하는 것입니다.
즉
if [[ $icon == /* ]]
then
echo "is a file path"
else
echo "is not a file path"
fi
편집하다:
파일이 존재하는지 확인하기 위해 이 작업을 수행할 수도 있습니다.
if [ -a $icon ];
then
echo "File exists"
else
echo "File does not exist"
fi
답변2
또는 마지막 요소(마지막 요소 포함) 앞의 모든 경로 요소를 잘라냅니다./
Icon=spotify-linux-128
echo ${Icon##*/}
spotify-linux-128
Icon=/snap/spotify/41/usr/share/spotify/icons/spotify-linux-128.png
echo ${Icon##*/}
spotify-linux-128.png
그런 다음 *
끝에 a를 추가하고 find
지정된 검색 루트 에 출력을 제공하십시오.
ls -1 sp*
spotify-linux-128
spotify-linux-128.png
spotify-linux-128.png.banana
spotify-linux-128.png.png
Icon=/snap/spotify/41/usr/share/spotify/icons/spotify-linux-128.png
fname=${Icon##*/}
find . -maxdepth 1 -iname "$fname*"
./spotify-linux-128.png.banana
./spotify-linux-128.png
./spotify-linux-128.png.png