Autor Tópico: [Resolvido] Caminhos absolutos e relativos em shell  (Lida 1907 vezes)

Offline irtigor

  • Equipe Ubuntu
  • Usuário Ubuntu
  • *****
  • Mensagens: 4.344
  • Delete, delete, delete!
    • Ver perfil
[Resolvido] Caminhos absolutos e relativos em shell
« Online: 02 de Novembro de 2010, 01:10 »
Faz um tempo que eu uso o seguinte comando para tocar um diretório usando o mplayer
Código: [Selecionar]
mplayer -playlist <( find caminho/da/pasta -type f -iname "*.mp3" -o -iname "*.ogv" -o -iname "*.wma" | sort -d)
Resolvi criar uma função
Código: [Selecionar]
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?
« Última modificação: 03 de Novembro de 2010, 04:44 por irtigor »

Offline irtigor

  • Equipe Ubuntu
  • Usuário Ubuntu
  • *****
  • Mensagens: 4.344
  • Delete, delete, delete!
    • Ver perfil
Re: Caminhos absolutos e relativos em shell
« Resposta #1 Online: 02 de Novembro de 2010, 17:06 »
Código: [Selecionar]
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.
« Última modificação: 03 de Novembro de 2010, 11:17 por irtigor »