• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

dateien rekursiv finden

hallo ich hab folgenden skript gefunden
http://de.linwiki.org/wiki/.aac/.m4a_nach_.wav/.mp3/.ogg_konvertieren
um m4a-files in mp3s zu wandeln soweit funzt der skript super ..
doch wie kann ich das auch rekursiv nutzen ???
und wenn werden alle mp3s in das jeweilige verzeichnis gelegt oder alle in einen ordner ?

des weiteren spuckt mir mplayer folgendes aus
Code:
mplayer: could not connect to socket
mplayer: No such file or directory
und das bei jeden file was erstellt wird, dennoch funzen die mp3s

außerdem wär es ganz praktisch wenn die m4a-files gelöscht würden ...
hängt das evtl mit dem fehler zusammen
 
Hallo

Sicher könnte man aus dem Script noch bisschen mehr rausholen.
Aber dazu müsste ich mich erstmal intensiver mit dem Script befassen.

Zu den Fehlermeldungen:
Hast du das Script von der Internetseite in eine Datei kopiert?

Ich habe das öfteren die Erfahrung gemacht das das Script dann oft nicht richtig funktioniert.
Ich versuche dann ob man das Original irgendwo runterladen kann, oder ob ich es vom Autor bekomme.

Aber anderer Tipp:
Probiere mal audioconvert . Ist wesentlich flexibler zu handhaben.
Ich habe audioconvert über smart installiert.

Gruß Peter
 
danke für den tip -... doch da steht immer was von nautilus -- funzt das auch unter kde ??
ferner ist der stand der dinge derer dass, es soweit funzt .. hab nun auch mit etwas hile raus bekommen das man da ne filelistanhängen kann ...
die sache ist aber die das das skript aus welchem grund auch immer, sich im jeweiligen verzeichnis befinden muss, was bei einer rekursiven fillist schonma mist ist

vielleicht hast du ja auch noch ne idee ??
 
Hallo

Also , ich bin mit audioconvert sehr zufrieden. Das funktioniert auch einwandfrei auf KDE. Mit ein weinig experimentieren glaube ich könnte man es auch recht gut in ein rekursives Script einbauen.

Recursiv ist nicht mal so schwer. Ich habe zB ein selbgebasteltes Script zum umbennen nach Metadaten. Es ermittelt erstmal alle Ordner in denen die mp3 drin sind und übergibt dann die Pfade der Reihe nach an den Befehl cd , mit dem man dann von Ordner zu Ordner wandert.

Aber aus dem Ärmel schütteln kann ich jetzt nichts. Ich müsste da selber erst bisschen tüffteln und experimentieren.

Was das von dir gefundene Script anbelangt:
Ich habe es mir jetzt erst mal ausgedruckt. Vielleicht werde ich irgendwann schlau draus.
Das erste was ich kapieren will ist, warum man mitten in Deutschland die Scripte englisch schreiben muss. Ich weis nicht ob an meinen Scripten überhaupt ein internationales Interesse bestehen würde :wink:

Ich denke du willst vermutlich eher eine schnelle Lösung.
Bei mir kanns evtl etwas dauern bis ich was gebastelt habe.


Gruß Peter
 
nunja das skript ist ja ursprüglich aus ner englischen wiki ...
und besser lesen lässt es sich auch ... (näher an syntax)
ich hab jetzt einen weg gefunden .. der vielleicht etwas unständlich ist .. aber immer noch vertretbarer aufwand ...

mit find ne filelist erstellt ...
dann hatt ich aus der schule noch paar schnippsel
was diese zeilenweise ausliest
in ner schleife dann sufix und präfix angehangen
so das das ganze einmal als zeilenweise befehls-"string" raus kommt um das skript auf einen schlag in alle benötigten ordner zu kopieren

und das selbe schema noch mal um um die jeweiligen skripte in jedem ordner auf zu rufen

- zwar nicht die feine englische art doch es funzt .. und immer noch besser als alles von hand zu copiren und zu tippen
 
Hallo


Was haltest du von meiner Lösung. Ich hoffe nur das ich meine Änderung richtig platziert habe:

Dabei sucht sich das Script die Ordner in denen m4a zu finden sind und wandert mit cd selbständig von Ordner zu Ordner:
(meine Änderung, siehe weiter unten)

Code:
#!/bin/bash  

#
# $Id: aac2mp3,v 1.2 2005/08/22 15:32:34 rali Exp $
# 

#
# Convert one or more AAC/M4A files to MP3.  Based on a script example
# I found at: http://gimpel.gi.funpic.de/Howtos/convert_aac/index.html
#

ME=`basename ${0}`

AAC2WAV="/usr/bin/mplayer"
WAV2MP3="/usr/bin/lame"

EXT="m4a"
BITRATE="192"

do_usage() {            # explanatory text
  echo "usage: ${ME} [-b nnn] [-e ext] [-f] [-c] [-r] [-v] [-h] [file list]"
  echo "       Convert music from AAC format to MP3"
  echo "  -l /path/app  Specify the location of lame(1)"
  echo "  -m /path/app  Specify the location of mplayer(1)"
  echo "  -b nnn        bitrate for mp3 encoder to use"
  echo "  -e ext        Use .ext rather than .m4a extension"
  echo "  -f            Force overwrite of existing file"
  echo "  -c            Delete original AAC|M4A file(s)"
  echo "  -s            Keep intermediate .wav file(s)"
  echo "  -v            Verbose output"
  echo "  -h            This information"
  exit 0
  }

do_error() {
  echo "$*"
  exit 1
  } 

file_overwrite_check() {
  if [ "$FORCE" != "yes" ]
  then
    test -f "${1}" && do_error "${1} already exists."
  else
    test -f "${1}" && echo "  ${1} is being overwritten."
  fi
  }

create_wav() {  # use mplayer(1) to convert from AAC to WAV
  file_overwrite_check "${2}"

  test $VERBOSE && echo -n "Creating intermediate WAV file"

  ${AAC2WAV} -really-quiet -ao pcm "${1}" -ao pcm:file="${2}"
  if [ $? -ne 0 ]
  then
    echo ""
    echo "Conversion to WAV (${AAC2WAV}) failed."
    do_cleanup
    do_error "Exiting"
  fi 

  test $VERBOSE && echo ".  OK"
  } 

create_mp3() {  # use lame(1) to convert from WAV to MP3
  file_overwrite_check "${2}" 

  test $VERBOSE && echo -n "Creating output MP3 file"

  ${WAV2MP3} -h -b ${BITRATE} -S "${1}" "${2}"
  if [ $? -ne 0 ]
  then
    echo ""
    echo "Conversion to MP3 (${WAV2MP3}) failed."
    do_cleanup
    do_error "Exiting"
  fi

  test $VERBOSE && echo ".  OK"
  }

do_cleanup() {  # Delete intermediate and (optionally) original file(s)
  test $VERBOSE && echo -n "Deleting intermediate file"
  test ${SAVEWAV} || rm -f "${2}"
  test ${RMM4A}   && rm -f "${1}"
  test $VERBOSE && echo ".  OK"
  } 

do_set_bitrate() {
  test $VERBOSE && echo -n "Setting output bitrate to: $1 kbps"
  BITRATE=$1
  test $VERBOSE && echo ".  OK"
  }

GETOPT=`getopt -o l:m:b:e:cfhrv -n ${ME} -- "$@"`
if [ $? -ne 0 ]
then
  do_usage
fi

eval set -- "$GETOPT"

while true
do
  case "$1" in
    -l) LAME=$2 ; shift ; shift ;;
    -m) MPLAYER=$2 ; shift ; shift ;;
    -b) do_set_bitrate $2 ; shift ; shift ;;
    -e) EXT=$2 ; shift ; shift ;;
    -f) FORCE="yes" ; shift ;;
    -c) RMM4A="yes" ; shift ;;
    -s) SAVEWAV="yes" ; shift ;;
    -v) VERBOSE="yes" ; shift ;;
    -h) do_usage ;;
    --) shift ; break ;;
     *)  do_usage ;;
  esac
done

test -f $LAME    || do_error "$LAME not found. Use \"-l\" switch."
test -f $MPLAYER || do_error "$MPLAYER not found. Use \"-m\" switch."





#=================eingefügt von trommelpeter======================
#alles folgende wird für jeden Ordner wiederholt in dem ein m4a gefunden wurde
   for ordner in `find . -name "*.${EXT}" -printf "%h\n" | sort -u`
   do
        cd "${ordner}"





if [ $# -eq 0 ]
then                    # Convert all files in current directory
  for IFILE in *.${EXT}
  do
    if [ "${IFILE}" == "*.${EXT}" ]
    then
      do_error "No files with extension ${EXT} in this directory."
    fi 

    OUT=`echo "${IFILE}" | sed -e "s/\.${EXT}//g"`

    create_wav "${IFILE}"   "${OUT}.wav"
    create_mp3 "${OUT}.wav" "${OUT}.mp3"
    do_cleanup "${IFILE}"   "${OUT}.wav"

  done
else                    # Convert listed files
  for IFILE in "$*"
  do
    test -f "${IFILE}" || do_error "${IFILE} not found."

    OUT=`echo "${IFILE}" | sed -e "s/\.${EXT}//g"`

    create_wav "${IFILE}"   "${OUT}.wav"
    create_mp3 "${OUT}.wav" "${OUT}.mp3"
    do_cleanup "${IFILE}"   "${OUT}.wav"

  done
fi




	done 	#dieses done schließt die von mir eingefügte for-Schleife ab

exit 0
 
Oben