.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