[Resolvido] Caminhos absolutos e relativos em shell

Iniciado por irtigor, 02 de Novembro de 2010, 01:10

tópico anterior - próximo tópico

irtigor

Faz um tempo que eu uso o seguinte comando para tocar um diretório usando o mplayer

mplayer -playlist <( find caminho/da/pasta -type f -iname "*.mp3" -o -iname "*.ogv" -o -iname "*.wma" | sort -d)

Resolvi criar uma função

mpdir (){
   if [ -f /tmp/musiclist.tmp ] ; then
       rm /tmp/musiclist.tmp
   fi
   for directory in "$@"; do
       if [ -d "$directory" ] ; then
           if [ -d "$(pwd)/$directory" ] ; then
               find "$(pwd)/$directory" -type f -iname "*.mp3" -o -iname "*.ogv" -o -iname "*.wma" | sort -d >> /tmp/musiclist.tmp
           else
               find "$directory" -type f -iname "*.mp3" -o -iname "*.ogv" -o -iname "*.wma" | sort -d >> /tmp/musiclist.tmp
           fi
       fi
   done
   if [ -s /tmp/musiclist.tmp ] ; then
       mplayer -playlist <(cat /tmp/musiclist.tmp)
   fi
}


Dessa forma ele está localizando múltiplos diretórios (absolutos: ~/musicas, /home/irtigor/, etc) e subdiretórios (se estou no ~ posso digitar só musicas), mas ele não toca ../musicas por exemplo, existe um maneira melhor de lidar com esses caminhos relativos?

irtigor

#1

mpdir (){
   originalpath=$(pwd)
   tmpfile="/tmp/mplayer-playlist.tmp"
   rm $tmpfile > /dev/null 2>&1
   for directory in "$@"; do
       if [ -d "$directory" ] ; then
           cd "$directory"
           find "$(pwd)" -type f -iregex '.*\.\(ogg\|mp3\|wav\|wma\)' | sort -d >> $tmpfile
           cd $originalpath
       fi
   done
   if [ -s $tmpfile ] ; then
       mplayer -playlist $tmpfile
   fi
}


Acho que isso resolve.