Bash script to convert all *flac to *.mp3 with FFmpeg?

The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP











up vote
22
down vote

favorite
11












I want to convert all *.flac to *.mp3 in the specific folder.



This is what I've tried, but not works:



# change to the home directory
cd ~/music
# convert all *.flac files
ffmpeg -i *.flac -acodec libmp3lame *.mp3
# (optional: check whether there are any errors printed on the terminal)
sleep 60


How to get my goal?










share|improve this question



















  • 2




    did you try "FOR LOOP"?
    – Danila Ladner
    Feb 12 '14 at 15:57










  • @DanilaLadner Not yet. Thanks for the clue.
    – Kevin Dong
    Feb 12 '14 at 15:58











  • I wrote a script that does this, in parallel, and copies the tags over: http://tuxhelp.org/#flac-distiller
    – user136310
    Sep 29 '15 at 19:38










  • Sorry I forget it. After convert file name become file.avi.mp3 you can use : rename "s/.avi//g" *.avi.mp3 for remove .avi.
    – user149335
    Dec 29 '15 at 19:47







  • 1




    Give computer break after hard work.
    – MeowMeow
    Jul 13 at 14:21














up vote
22
down vote

favorite
11












I want to convert all *.flac to *.mp3 in the specific folder.



This is what I've tried, but not works:



# change to the home directory
cd ~/music
# convert all *.flac files
ffmpeg -i *.flac -acodec libmp3lame *.mp3
# (optional: check whether there are any errors printed on the terminal)
sleep 60


How to get my goal?










share|improve this question



















  • 2




    did you try "FOR LOOP"?
    – Danila Ladner
    Feb 12 '14 at 15:57










  • @DanilaLadner Not yet. Thanks for the clue.
    – Kevin Dong
    Feb 12 '14 at 15:58











  • I wrote a script that does this, in parallel, and copies the tags over: http://tuxhelp.org/#flac-distiller
    – user136310
    Sep 29 '15 at 19:38










  • Sorry I forget it. After convert file name become file.avi.mp3 you can use : rename "s/.avi//g" *.avi.mp3 for remove .avi.
    – user149335
    Dec 29 '15 at 19:47







  • 1




    Give computer break after hard work.
    – MeowMeow
    Jul 13 at 14:21












up vote
22
down vote

favorite
11









up vote
22
down vote

favorite
11






11





I want to convert all *.flac to *.mp3 in the specific folder.



This is what I've tried, but not works:



# change to the home directory
cd ~/music
# convert all *.flac files
ffmpeg -i *.flac -acodec libmp3lame *.mp3
# (optional: check whether there are any errors printed on the terminal)
sleep 60


How to get my goal?










share|improve this question















I want to convert all *.flac to *.mp3 in the specific folder.



This is what I've tried, but not works:



# change to the home directory
cd ~/music
# convert all *.flac files
ffmpeg -i *.flac -acodec libmp3lame *.mp3
# (optional: check whether there are any errors printed on the terminal)
sleep 60


How to get my goal?







bash shell-script ffmpeg






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Feb 12 '14 at 23:08









Gilles

517k12410321560




517k12410321560










asked Feb 12 '14 at 15:55









Kevin Dong

4261413




4261413







  • 2




    did you try "FOR LOOP"?
    – Danila Ladner
    Feb 12 '14 at 15:57










  • @DanilaLadner Not yet. Thanks for the clue.
    – Kevin Dong
    Feb 12 '14 at 15:58











  • I wrote a script that does this, in parallel, and copies the tags over: http://tuxhelp.org/#flac-distiller
    – user136310
    Sep 29 '15 at 19:38










  • Sorry I forget it. After convert file name become file.avi.mp3 you can use : rename "s/.avi//g" *.avi.mp3 for remove .avi.
    – user149335
    Dec 29 '15 at 19:47







  • 1




    Give computer break after hard work.
    – MeowMeow
    Jul 13 at 14:21












  • 2




    did you try "FOR LOOP"?
    – Danila Ladner
    Feb 12 '14 at 15:57










  • @DanilaLadner Not yet. Thanks for the clue.
    – Kevin Dong
    Feb 12 '14 at 15:58











  • I wrote a script that does this, in parallel, and copies the tags over: http://tuxhelp.org/#flac-distiller
    – user136310
    Sep 29 '15 at 19:38










  • Sorry I forget it. After convert file name become file.avi.mp3 you can use : rename "s/.avi//g" *.avi.mp3 for remove .avi.
    – user149335
    Dec 29 '15 at 19:47







  • 1




    Give computer break after hard work.
    – MeowMeow
    Jul 13 at 14:21







2




2




did you try "FOR LOOP"?
– Danila Ladner
Feb 12 '14 at 15:57




did you try "FOR LOOP"?
– Danila Ladner
Feb 12 '14 at 15:57












@DanilaLadner Not yet. Thanks for the clue.
– Kevin Dong
Feb 12 '14 at 15:58





@DanilaLadner Not yet. Thanks for the clue.
– Kevin Dong
Feb 12 '14 at 15:58













I wrote a script that does this, in parallel, and copies the tags over: http://tuxhelp.org/#flac-distiller
– user136310
Sep 29 '15 at 19:38




I wrote a script that does this, in parallel, and copies the tags over: http://tuxhelp.org/#flac-distiller
– user136310
Sep 29 '15 at 19:38












Sorry I forget it. After convert file name become file.avi.mp3 you can use : rename "s/.avi//g" *.avi.mp3 for remove .avi.
– user149335
Dec 29 '15 at 19:47





Sorry I forget it. After convert file name become file.avi.mp3 you can use : rename "s/.avi//g" *.avi.mp3 for remove .avi.
– user149335
Dec 29 '15 at 19:47





1




1




Give computer break after hard work.
– MeowMeow
Jul 13 at 14:21




Give computer break after hard work.
– MeowMeow
Jul 13 at 14:21










13 Answers
13






active

oldest

votes

















up vote
32
down vote



accepted










Try this:



for i in *.flac ; do 
ffmpeg -i "$i" -acodec libmp3lame $(basename "$i/.flac").mp3
sleep 60
done





share|improve this answer


















  • 1




    It isn't working with files containing space. How can I modify $(basename "$i/.flac") to handle spaces?
    – ppr
    Jan 3 '16 at 15:39







  • 1




    @ppr Try putting this line just before the for loop: IFS=$'n'
    – Ketan
    Jan 3 '16 at 19:14






  • 3




    I solved the space issue by changing $(basename "$i/.flac").mp3 to "$(basename "$i/.flac").mp3" (putting quotes around it)
    – MalcolmOcean
    Sep 17 '16 at 20:02

















up vote
38
down vote













A simple 1 liner solution:
find -name "*.flac" -exec ffmpeg -i -acodec libmp3lame -ab 128k .mp3 ;



http://lewisdiamond.blogspot.ca/2012/01/converting-flac-to-mp3.html



Note that this will be applied recursively in the given directory. I.e. if you run this from your Music folder, it will convert all flacs from subfolders and produce a .mp3 next to it. You may also do it without ffmpeg by directly using flac and lame (i.e. read w/ flac, pipe to lame, output to a file .mp3), as shown in the link.






share|improve this answer






















  • You can use -maxdepth 1 I think like in X Tian's answer to limit the recursiveness.
    – jus cogens prime
    Oct 24 '14 at 20:00






  • 2




    Yes you can. You could also use ls piped to xargs or a for loop. I'm just making the (possibly wrong) assumption that a recursive search is more along what the OP needed (i.e. change all the .flac from my music library).
    – Lewis Diamond
    Oct 24 '14 at 20:48






  • 9




    This command is great - however; You end up with files named *.flac.mp3. Using your command, I came up with this... find -name "*.flac" -exec bash -c 'ffmpeg -i "" -y -acodec libmp3lame -ab 128k "$0/.flac.mp3"' ;
    – Shane
    Oct 27 '15 at 2:54







  • 1




    Yes, as I explained in the blog, I like this aspect of adding the .mp3 because it tells me this files comes from a lossless source, which should be found somewhere on my hard drive.
    – Lewis Diamond
    Oct 28 '15 at 16:23

















up vote
7
down vote













If you have some white spaces in the file names:



for a in *.flac; do
f="$a[@]/%flac/mp3"
ffmpeg -i "$a" -qscale:a 0 "$f"
done





share|improve this answer






















  • I have a folder with a mixture of mp4 and wav files. How do I convert all of them into mp3? Thank you.
    – kRazzy R
    Jun 11 at 14:55

















up vote
1
down vote













I worked on @Ketan's answer using avconv, since ffmpeg doesn't work well over here.



for i in *.flac ; do 
avconv -i "$i" "./mp3/$i".mp3
done


This converts flac files in a folder into mp3 files and moves then to an existing "mp3" folder. Files will be named in the model "original_name.flac.mp3"






share|improve this answer



























    up vote
    1
    down vote













    Parallel FTW (no doubt you have more than one core - why not use them?):



    ls *flac | while read f; do ffmpeg -i "$f" -acodec libmp3lame $f.mp3 & done





    share|improve this answer
















    • 2




      see why not parse ls and Why is using a shell loop to process text considered bad practice?
      – Evgeny Vereshchagin
      Jul 27 '15 at 21:24

















    up vote
    1
    down vote













    find . -maxdepth 1 -type f -name '*.flac' | while IFS= read -r f; do
    ffmpeg -i "$f" -acodec libmp3lame "$( sed -e's/.flac/.mp3/g' <<< $f )"
    done





    share|improve this answer


















    • 1




      sed expression needs an ending '
      – Jaime M.
      Aug 14 '15 at 16:15

















    up vote
    1
    down vote













    I took everything I found here (and maybe on some other sites) and created a small tool to not only create mp3s of flacs recursively, but also preserve relative paths to create them elsewhere with multithread support.



    oh, and yes, I see, I didn't use ffmpeg in that case, because my OSMC didn't provide packages for ffmpeg, only avconv, but since you're already here, I guess you know, it's "basically" the same - at least for the most important part. Just replace the command "avconv" with "ffmpeg". My first runs were with the ffmpeg bin and the exact same options.



    I am by no means a bash hacker, but I managed it, as my first bashscript with the given demands, and maybe someone will benefit.
    I am open for any suggestions from your side, but so far it works for me.



    my script to spin up the 4 instances, one for each core, is like this:



    #!/bin/bash
    # this should be quite self-explanatory
    for i in 1..4
    do
    echo "started instance no: $i"
    /home/osmc/transform.sh . &
    # sleeping time can be shorter, this is just so, that
    # not all 4 processes will want to start with the same
    # file, during runtime collisions should not become an issue
    sleep 5
    done
    echo "all instances started"


    And the worker script like this:



    #!/bin/bash
    # take care of spaces
    IFS=$'n'
    # my music folders, remote is the source, local the target dir
    remote=/mnt/music/FLAC
    local=/mnt/1tb/mp3
    # for all flac files start loop
    for i in $(find $remote -type f -iname '*.flac' );
    do
    ## SET VARIABLES for PATHS and FILENAMES
    ## this might be able to be super short with sed and complex one-liner,
    ## but I s*ck at regex
    fullfile=$i
    # strip extension
    filename="$i##*/"
    # add new extension
    filename="$filename%.*.mp3"
    # get full dirname from inputfile
    fulldir=$(dirname "$i")
    # strip leading dirs from full input dir
    # count the dirs, add two, then you're good.
    reldir="$(echo $fulldir | cut -d'/' -f5-)"
    # some subdirs in my collection even have a flac subdir, you might
    # ignore this, it strips only if it exists
    reldir=$reldir//flac
    # combine target dir and relative dir
    outdir="$local/$reldir"
    # generate the full output filename for conversion
    outfile="$outdir/$filename"
    # create whole target directory - yes, I need it only once, but hey,
    # it works, didn't want to start a if not exist statement... should I?
    mkdir -p "$outdir"
    # run conversion - finally... you may want or need to replace
    # "avconv" with "ffmpeg"
    avconv -n -nostats -loglevel info -i "$fullfile" -codec:a libmp3lame -qscale:a 0 "$outfile"
    done


    which can be found at
    https://github.com/erdnuesse/flac-to-mp3



    Regards,
    Kay






    share|improve this answer






















    • welcome aboard, good effort. +1
      – Alex Stragies
      Jan 12 at 18:00

















    up vote
    0
    down vote













    For example, if you have multiple avi files:



    ls *.avi | xargs -I ffmpeg -i .mp3





    share|improve this answer





























      up vote
      0
      down vote













      If it can help ....
      I've written a small bash script to do this ....
      You need to have ffmpeg / flac installed.



      How it works:



      It takes 2 arguments :



      1. The folder of your music library (flac/ogg/mp3 ...)

      2. The destination folder (you need to create it before).

      It produce :



      • An exact copy from the source folder into the destination folder, with:

        • the non flac files copied into.

        • the flac files transformed to mp3 ( VBR high quality)


      • A run.sh file with the commands to convert the flac files (this script is executed automatically).


      #!/bin/bash

      FLAC_PATH=$1
      CONV_PATH=$2

      DEBUG=0;

      function usage
      echo "";
      echo " This script convert all flac files from a folder to mp3 files to a second folder";
      echo "";
      echo " Usage :";
      echo " ./conv.sh Source Folder Destination Folder";
      echo " note : booth folder must exist before starting this script";
      echo " files other than flac are copied to the destination folder";
      echo "";


      if [ ! -d "$2" ]; then
      echo "";
      echo " ERROR : [$2] is not a directory.";
      usage
      exit 1
      fi;

      if [ ! -d "$2" ]; then
      echo "";
      echo " ERROR : [$2] is not a directory.";
      usage
      exit 1
      fi;

      COMMANDS="run.sh"
      echo "" > run.sh
      echo " convert from $FLAC_PATH to $CONV_PATH ";

      find "$FLAC_PATH" -type f |while read myFile; do
      SRC_DIR=$myFile%/*
      SRC_FILE=$myFile##*/
      DST_DIR=$CONV_PATH/$SRC_DIR
      mkdir -p "$DST_DIR"
      # TEST if the file is a flac ....
      metaflac --show-md5sum "$myFile" 2>/dev/null 1>/dev/null
      if [ $? -eq 0 ]; then
      echo -n " *** $myFile [FLAC !] : "
      DST_FILE=$myFile%.*
      OUT_PATH="$DST_DIR/$( echo $SRC_FILE | sed -e 's/.flac$/.mp3/')"

      if [ $DEBUG == 1 ]; then
      echo " SRC = $myFile";
      echo " OUT = $OUT_PATH"
      fi;

      if [ -f "$OUT_PATH" ]; then
      echo " exist, do nothing !";
      else
      echo " add to compress list !";
      echo "ffmpeg -y -i "$myFile" -codec:a libmp3lame -q:a 0 -map_metadata 0 -id3v2_version 3 "$OUT_PATH" " >> $COMMANDS
      fi;

      else
      echo -n " *** $SRC_FILE [NOT FLAC] : "
      if [ -f "$CONV_PATH/$myFile" ]; then
      echo " exist, do nothing !"
      else
      echo " copy."
      cp "$myFile" "$CONV_PATH/$myFile"
      fi
      fi

      done;

      echo " And now, CONVERT THE FLAC's!!! "
      sh run.sh






      share|improve this answer



























        up vote
        0
        down vote













        for a in *.flac



        do
        OUTF=echo "$a" | sed s/.flac$/.mp3/g



        ffmpeg -i "$a" -acodec libmp3lame "$OUTF"



        done






        share|improve this answer
















        • 1




          welcome to U&L, your answer hardly add anything to @Ketan accepted answer four years ago.
          – Archemar
          Dec 29 '17 at 8:45

















        up vote
        0
        down vote













        To recursively convert in mp3 all the flac or wav files in nested folders, I used this command:



        find '~/Music/' -iname '*.flac' , -iname '*.wav' -exec bash -c 'D=$(dirname ""); B=$(basename ""); mkdir "$D/mp3/"; ffmpeg -i "" -ab 320k -map_metadata 0 -id3v2_version 3 -acodec libmp3lame "$D/mp3/$B%.*.mp3"' ;


        It will create a folder named "mp3" inside the one with flac or wav files and, inside the mp3 folder, it will save relative mp3 files with a bitrate of 320kbps, without keeping the old file extension in the name.






        share|improve this answer





























          up vote
          0
          down vote













          GNU Parallel is make for these kind of tasks:



          # change to the home directory
          cd ~/music
          # convert all *.flac files
          parallel ffmpeg -i -acodec libmp3lame ..mp3 ::: *.flac
          # (optional: check whether there are any errors printed on the terminal)
          sleep 60


          It will run the jobs in parallel (one job per cpu core) and make sure the output on the terminal is not mixed together.






          share|improve this answer



























            up vote
            0
            down vote













            I realize this comes quite late, but for memory, see my script "batchaudiocvt" on sourceforge. It is a (quite large) shell script designed for efficient mass conversion of audio files, between many formats. In particular, it makes its best to convert the usual tags.






            share|improve this answer








            New contributor




            user283537 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
            Check out our Code of Conduct.

















              Your Answer








              StackExchange.ready(function()
              var channelOptions =
              tags: "".split(" "),
              id: "106"
              ;
              initTagRenderer("".split(" "), "".split(" "), channelOptions);

              StackExchange.using("externalEditor", function()
              // Have to fire editor after snippets, if snippets enabled
              if (StackExchange.settings.snippets.snippetsEnabled)
              StackExchange.using("snippets", function()
              createEditor();
              );

              else
              createEditor();

              );

              function createEditor()
              StackExchange.prepareEditor(
              heartbeatType: 'answer',
              convertImagesToLinks: false,
              noModals: true,
              showLowRepImageUploadWarning: true,
              reputationToPostImages: null,
              bindNavPrevention: true,
              postfix: "",
              imageUploader:
              brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
              contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
              allowUrls: true
              ,
              onDemand: true,
              discardSelector: ".discard-answer"
              ,immediatelyShowMarkdownHelp:true
              );



              );













               

              draft saved


              draft discarded


















              StackExchange.ready(
              function ()
              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f114908%2fbash-script-to-convert-all-flac-to-mp3-with-ffmpeg%23new-answer', 'question_page');

              );

              Post as a guest






























              13 Answers
              13






              active

              oldest

              votes








              13 Answers
              13






              active

              oldest

              votes









              active

              oldest

              votes






              active

              oldest

              votes








              up vote
              32
              down vote



              accepted










              Try this:



              for i in *.flac ; do 
              ffmpeg -i "$i" -acodec libmp3lame $(basename "$i/.flac").mp3
              sleep 60
              done





              share|improve this answer


















              • 1




                It isn't working with files containing space. How can I modify $(basename "$i/.flac") to handle spaces?
                – ppr
                Jan 3 '16 at 15:39







              • 1




                @ppr Try putting this line just before the for loop: IFS=$'n'
                – Ketan
                Jan 3 '16 at 19:14






              • 3




                I solved the space issue by changing $(basename "$i/.flac").mp3 to "$(basename "$i/.flac").mp3" (putting quotes around it)
                – MalcolmOcean
                Sep 17 '16 at 20:02














              up vote
              32
              down vote



              accepted










              Try this:



              for i in *.flac ; do 
              ffmpeg -i "$i" -acodec libmp3lame $(basename "$i/.flac").mp3
              sleep 60
              done





              share|improve this answer


















              • 1




                It isn't working with files containing space. How can I modify $(basename "$i/.flac") to handle spaces?
                – ppr
                Jan 3 '16 at 15:39







              • 1




                @ppr Try putting this line just before the for loop: IFS=$'n'
                – Ketan
                Jan 3 '16 at 19:14






              • 3




                I solved the space issue by changing $(basename "$i/.flac").mp3 to "$(basename "$i/.flac").mp3" (putting quotes around it)
                – MalcolmOcean
                Sep 17 '16 at 20:02












              up vote
              32
              down vote



              accepted







              up vote
              32
              down vote



              accepted






              Try this:



              for i in *.flac ; do 
              ffmpeg -i "$i" -acodec libmp3lame $(basename "$i/.flac").mp3
              sleep 60
              done





              share|improve this answer














              Try this:



              for i in *.flac ; do 
              ffmpeg -i "$i" -acodec libmp3lame $(basename "$i/.flac").mp3
              sleep 60
              done






              share|improve this answer














              share|improve this answer



              share|improve this answer








              edited Aug 23 '15 at 11:54









              chaos

              34.4k771114




              34.4k771114










              answered Feb 12 '14 at 16:27









              Ketan

              5,62242741




              5,62242741







              • 1




                It isn't working with files containing space. How can I modify $(basename "$i/.flac") to handle spaces?
                – ppr
                Jan 3 '16 at 15:39







              • 1




                @ppr Try putting this line just before the for loop: IFS=$'n'
                – Ketan
                Jan 3 '16 at 19:14






              • 3




                I solved the space issue by changing $(basename "$i/.flac").mp3 to "$(basename "$i/.flac").mp3" (putting quotes around it)
                – MalcolmOcean
                Sep 17 '16 at 20:02












              • 1




                It isn't working with files containing space. How can I modify $(basename "$i/.flac") to handle spaces?
                – ppr
                Jan 3 '16 at 15:39







              • 1




                @ppr Try putting this line just before the for loop: IFS=$'n'
                – Ketan
                Jan 3 '16 at 19:14






              • 3




                I solved the space issue by changing $(basename "$i/.flac").mp3 to "$(basename "$i/.flac").mp3" (putting quotes around it)
                – MalcolmOcean
                Sep 17 '16 at 20:02







              1




              1




              It isn't working with files containing space. How can I modify $(basename "$i/.flac") to handle spaces?
              – ppr
              Jan 3 '16 at 15:39





              It isn't working with files containing space. How can I modify $(basename "$i/.flac") to handle spaces?
              – ppr
              Jan 3 '16 at 15:39





              1




              1




              @ppr Try putting this line just before the for loop: IFS=$'n'
              – Ketan
              Jan 3 '16 at 19:14




              @ppr Try putting this line just before the for loop: IFS=$'n'
              – Ketan
              Jan 3 '16 at 19:14




              3




              3




              I solved the space issue by changing $(basename "$i/.flac").mp3 to "$(basename "$i/.flac").mp3" (putting quotes around it)
              – MalcolmOcean
              Sep 17 '16 at 20:02




              I solved the space issue by changing $(basename "$i/.flac").mp3 to "$(basename "$i/.flac").mp3" (putting quotes around it)
              – MalcolmOcean
              Sep 17 '16 at 20:02












              up vote
              38
              down vote













              A simple 1 liner solution:
              find -name "*.flac" -exec ffmpeg -i -acodec libmp3lame -ab 128k .mp3 ;



              http://lewisdiamond.blogspot.ca/2012/01/converting-flac-to-mp3.html



              Note that this will be applied recursively in the given directory. I.e. if you run this from your Music folder, it will convert all flacs from subfolders and produce a .mp3 next to it. You may also do it without ffmpeg by directly using flac and lame (i.e. read w/ flac, pipe to lame, output to a file .mp3), as shown in the link.






              share|improve this answer






















              • You can use -maxdepth 1 I think like in X Tian's answer to limit the recursiveness.
                – jus cogens prime
                Oct 24 '14 at 20:00






              • 2




                Yes you can. You could also use ls piped to xargs or a for loop. I'm just making the (possibly wrong) assumption that a recursive search is more along what the OP needed (i.e. change all the .flac from my music library).
                – Lewis Diamond
                Oct 24 '14 at 20:48






              • 9




                This command is great - however; You end up with files named *.flac.mp3. Using your command, I came up with this... find -name "*.flac" -exec bash -c 'ffmpeg -i "" -y -acodec libmp3lame -ab 128k "$0/.flac.mp3"' ;
                – Shane
                Oct 27 '15 at 2:54







              • 1




                Yes, as I explained in the blog, I like this aspect of adding the .mp3 because it tells me this files comes from a lossless source, which should be found somewhere on my hard drive.
                – Lewis Diamond
                Oct 28 '15 at 16:23














              up vote
              38
              down vote













              A simple 1 liner solution:
              find -name "*.flac" -exec ffmpeg -i -acodec libmp3lame -ab 128k .mp3 ;



              http://lewisdiamond.blogspot.ca/2012/01/converting-flac-to-mp3.html



              Note that this will be applied recursively in the given directory. I.e. if you run this from your Music folder, it will convert all flacs from subfolders and produce a .mp3 next to it. You may also do it without ffmpeg by directly using flac and lame (i.e. read w/ flac, pipe to lame, output to a file .mp3), as shown in the link.






              share|improve this answer






















              • You can use -maxdepth 1 I think like in X Tian's answer to limit the recursiveness.
                – jus cogens prime
                Oct 24 '14 at 20:00






              • 2




                Yes you can. You could also use ls piped to xargs or a for loop. I'm just making the (possibly wrong) assumption that a recursive search is more along what the OP needed (i.e. change all the .flac from my music library).
                – Lewis Diamond
                Oct 24 '14 at 20:48






              • 9




                This command is great - however; You end up with files named *.flac.mp3. Using your command, I came up with this... find -name "*.flac" -exec bash -c 'ffmpeg -i "" -y -acodec libmp3lame -ab 128k "$0/.flac.mp3"' ;
                – Shane
                Oct 27 '15 at 2:54







              • 1




                Yes, as I explained in the blog, I like this aspect of adding the .mp3 because it tells me this files comes from a lossless source, which should be found somewhere on my hard drive.
                – Lewis Diamond
                Oct 28 '15 at 16:23












              up vote
              38
              down vote










              up vote
              38
              down vote









              A simple 1 liner solution:
              find -name "*.flac" -exec ffmpeg -i -acodec libmp3lame -ab 128k .mp3 ;



              http://lewisdiamond.blogspot.ca/2012/01/converting-flac-to-mp3.html



              Note that this will be applied recursively in the given directory. I.e. if you run this from your Music folder, it will convert all flacs from subfolders and produce a .mp3 next to it. You may also do it without ffmpeg by directly using flac and lame (i.e. read w/ flac, pipe to lame, output to a file .mp3), as shown in the link.






              share|improve this answer














              A simple 1 liner solution:
              find -name "*.flac" -exec ffmpeg -i -acodec libmp3lame -ab 128k .mp3 ;



              http://lewisdiamond.blogspot.ca/2012/01/converting-flac-to-mp3.html



              Note that this will be applied recursively in the given directory. I.e. if you run this from your Music folder, it will convert all flacs from subfolders and produce a .mp3 next to it. You may also do it without ffmpeg by directly using flac and lame (i.e. read w/ flac, pipe to lame, output to a file .mp3), as shown in the link.







              share|improve this answer














              share|improve this answer



              share|improve this answer








              edited Oct 24 '14 at 19:05

























              answered Oct 24 '14 at 18:11









              Lewis Diamond

              48144




              48144











              • You can use -maxdepth 1 I think like in X Tian's answer to limit the recursiveness.
                – jus cogens prime
                Oct 24 '14 at 20:00






              • 2




                Yes you can. You could also use ls piped to xargs or a for loop. I'm just making the (possibly wrong) assumption that a recursive search is more along what the OP needed (i.e. change all the .flac from my music library).
                – Lewis Diamond
                Oct 24 '14 at 20:48






              • 9




                This command is great - however; You end up with files named *.flac.mp3. Using your command, I came up with this... find -name "*.flac" -exec bash -c 'ffmpeg -i "" -y -acodec libmp3lame -ab 128k "$0/.flac.mp3"' ;
                – Shane
                Oct 27 '15 at 2:54







              • 1




                Yes, as I explained in the blog, I like this aspect of adding the .mp3 because it tells me this files comes from a lossless source, which should be found somewhere on my hard drive.
                – Lewis Diamond
                Oct 28 '15 at 16:23
















              • You can use -maxdepth 1 I think like in X Tian's answer to limit the recursiveness.
                – jus cogens prime
                Oct 24 '14 at 20:00






              • 2




                Yes you can. You could also use ls piped to xargs or a for loop. I'm just making the (possibly wrong) assumption that a recursive search is more along what the OP needed (i.e. change all the .flac from my music library).
                – Lewis Diamond
                Oct 24 '14 at 20:48






              • 9




                This command is great - however; You end up with files named *.flac.mp3. Using your command, I came up with this... find -name "*.flac" -exec bash -c 'ffmpeg -i "" -y -acodec libmp3lame -ab 128k "$0/.flac.mp3"' ;
                – Shane
                Oct 27 '15 at 2:54







              • 1




                Yes, as I explained in the blog, I like this aspect of adding the .mp3 because it tells me this files comes from a lossless source, which should be found somewhere on my hard drive.
                – Lewis Diamond
                Oct 28 '15 at 16:23















              You can use -maxdepth 1 I think like in X Tian's answer to limit the recursiveness.
              – jus cogens prime
              Oct 24 '14 at 20:00




              You can use -maxdepth 1 I think like in X Tian's answer to limit the recursiveness.
              – jus cogens prime
              Oct 24 '14 at 20:00




              2




              2




              Yes you can. You could also use ls piped to xargs or a for loop. I'm just making the (possibly wrong) assumption that a recursive search is more along what the OP needed (i.e. change all the .flac from my music library).
              – Lewis Diamond
              Oct 24 '14 at 20:48




              Yes you can. You could also use ls piped to xargs or a for loop. I'm just making the (possibly wrong) assumption that a recursive search is more along what the OP needed (i.e. change all the .flac from my music library).
              – Lewis Diamond
              Oct 24 '14 at 20:48




              9




              9




              This command is great - however; You end up with files named *.flac.mp3. Using your command, I came up with this... find -name "*.flac" -exec bash -c 'ffmpeg -i "" -y -acodec libmp3lame -ab 128k "$0/.flac.mp3"' ;
              – Shane
              Oct 27 '15 at 2:54





              This command is great - however; You end up with files named *.flac.mp3. Using your command, I came up with this... find -name "*.flac" -exec bash -c 'ffmpeg -i "" -y -acodec libmp3lame -ab 128k "$0/.flac.mp3"' ;
              – Shane
              Oct 27 '15 at 2:54





              1




              1




              Yes, as I explained in the blog, I like this aspect of adding the .mp3 because it tells me this files comes from a lossless source, which should be found somewhere on my hard drive.
              – Lewis Diamond
              Oct 28 '15 at 16:23




              Yes, as I explained in the blog, I like this aspect of adding the .mp3 because it tells me this files comes from a lossless source, which should be found somewhere on my hard drive.
              – Lewis Diamond
              Oct 28 '15 at 16:23










              up vote
              7
              down vote













              If you have some white spaces in the file names:



              for a in *.flac; do
              f="$a[@]/%flac/mp3"
              ffmpeg -i "$a" -qscale:a 0 "$f"
              done





              share|improve this answer






















              • I have a folder with a mixture of mp4 and wav files. How do I convert all of them into mp3? Thank you.
                – kRazzy R
                Jun 11 at 14:55














              up vote
              7
              down vote













              If you have some white spaces in the file names:



              for a in *.flac; do
              f="$a[@]/%flac/mp3"
              ffmpeg -i "$a" -qscale:a 0 "$f"
              done





              share|improve this answer






















              • I have a folder with a mixture of mp4 and wav files. How do I convert all of them into mp3? Thank you.
                – kRazzy R
                Jun 11 at 14:55












              up vote
              7
              down vote










              up vote
              7
              down vote









              If you have some white spaces in the file names:



              for a in *.flac; do
              f="$a[@]/%flac/mp3"
              ffmpeg -i "$a" -qscale:a 0 "$f"
              done





              share|improve this answer














              If you have some white spaces in the file names:



              for a in *.flac; do
              f="$a[@]/%flac/mp3"
              ffmpeg -i "$a" -qscale:a 0 "$f"
              done






              share|improve this answer














              share|improve this answer



              share|improve this answer








              edited Dec 29 '14 at 6:14









              HalosGhost

              3,63592035




              3,63592035










              answered Dec 29 '14 at 5:36









              Daeseong Kim

              7111




              7111











              • I have a folder with a mixture of mp4 and wav files. How do I convert all of them into mp3? Thank you.
                – kRazzy R
                Jun 11 at 14:55
















              • I have a folder with a mixture of mp4 and wav files. How do I convert all of them into mp3? Thank you.
                – kRazzy R
                Jun 11 at 14:55















              I have a folder with a mixture of mp4 and wav files. How do I convert all of them into mp3? Thank you.
              – kRazzy R
              Jun 11 at 14:55




              I have a folder with a mixture of mp4 and wav files. How do I convert all of them into mp3? Thank you.
              – kRazzy R
              Jun 11 at 14:55










              up vote
              1
              down vote













              I worked on @Ketan's answer using avconv, since ffmpeg doesn't work well over here.



              for i in *.flac ; do 
              avconv -i "$i" "./mp3/$i".mp3
              done


              This converts flac files in a folder into mp3 files and moves then to an existing "mp3" folder. Files will be named in the model "original_name.flac.mp3"






              share|improve this answer
























                up vote
                1
                down vote













                I worked on @Ketan's answer using avconv, since ffmpeg doesn't work well over here.



                for i in *.flac ; do 
                avconv -i "$i" "./mp3/$i".mp3
                done


                This converts flac files in a folder into mp3 files and moves then to an existing "mp3" folder. Files will be named in the model "original_name.flac.mp3"






                share|improve this answer






















                  up vote
                  1
                  down vote










                  up vote
                  1
                  down vote









                  I worked on @Ketan's answer using avconv, since ffmpeg doesn't work well over here.



                  for i in *.flac ; do 
                  avconv -i "$i" "./mp3/$i".mp3
                  done


                  This converts flac files in a folder into mp3 files and moves then to an existing "mp3" folder. Files will be named in the model "original_name.flac.mp3"






                  share|improve this answer












                  I worked on @Ketan's answer using avconv, since ffmpeg doesn't work well over here.



                  for i in *.flac ; do 
                  avconv -i "$i" "./mp3/$i".mp3
                  done


                  This converts flac files in a folder into mp3 files and moves then to an existing "mp3" folder. Files will be named in the model "original_name.flac.mp3"







                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered Jul 7 '15 at 13:28









                  DanBC

                  112




                  112




















                      up vote
                      1
                      down vote













                      Parallel FTW (no doubt you have more than one core - why not use them?):



                      ls *flac | while read f; do ffmpeg -i "$f" -acodec libmp3lame $f.mp3 & done





                      share|improve this answer
















                      • 2




                        see why not parse ls and Why is using a shell loop to process text considered bad practice?
                        – Evgeny Vereshchagin
                        Jul 27 '15 at 21:24














                      up vote
                      1
                      down vote













                      Parallel FTW (no doubt you have more than one core - why not use them?):



                      ls *flac | while read f; do ffmpeg -i "$f" -acodec libmp3lame $f.mp3 & done





                      share|improve this answer
















                      • 2




                        see why not parse ls and Why is using a shell loop to process text considered bad practice?
                        – Evgeny Vereshchagin
                        Jul 27 '15 at 21:24












                      up vote
                      1
                      down vote










                      up vote
                      1
                      down vote









                      Parallel FTW (no doubt you have more than one core - why not use them?):



                      ls *flac | while read f; do ffmpeg -i "$f" -acodec libmp3lame $f.mp3 & done





                      share|improve this answer












                      Parallel FTW (no doubt you have more than one core - why not use them?):



                      ls *flac | while read f; do ffmpeg -i "$f" -acodec libmp3lame $f.mp3 & done






                      share|improve this answer












                      share|improve this answer



                      share|improve this answer










                      answered Jul 27 '15 at 21:04









                      hoffmanc

                      1112




                      1112







                      • 2




                        see why not parse ls and Why is using a shell loop to process text considered bad practice?
                        – Evgeny Vereshchagin
                        Jul 27 '15 at 21:24












                      • 2




                        see why not parse ls and Why is using a shell loop to process text considered bad practice?
                        – Evgeny Vereshchagin
                        Jul 27 '15 at 21:24







                      2




                      2




                      see why not parse ls and Why is using a shell loop to process text considered bad practice?
                      – Evgeny Vereshchagin
                      Jul 27 '15 at 21:24




                      see why not parse ls and Why is using a shell loop to process text considered bad practice?
                      – Evgeny Vereshchagin
                      Jul 27 '15 at 21:24










                      up vote
                      1
                      down vote













                      find . -maxdepth 1 -type f -name '*.flac' | while IFS= read -r f; do
                      ffmpeg -i "$f" -acodec libmp3lame "$( sed -e's/.flac/.mp3/g' <<< $f )"
                      done





                      share|improve this answer


















                      • 1




                        sed expression needs an ending '
                        – Jaime M.
                        Aug 14 '15 at 16:15














                      up vote
                      1
                      down vote













                      find . -maxdepth 1 -type f -name '*.flac' | while IFS= read -r f; do
                      ffmpeg -i "$f" -acodec libmp3lame "$( sed -e's/.flac/.mp3/g' <<< $f )"
                      done





                      share|improve this answer


















                      • 1




                        sed expression needs an ending '
                        – Jaime M.
                        Aug 14 '15 at 16:15












                      up vote
                      1
                      down vote










                      up vote
                      1
                      down vote









                      find . -maxdepth 1 -type f -name '*.flac' | while IFS= read -r f; do
                      ffmpeg -i "$f" -acodec libmp3lame "$( sed -e's/.flac/.mp3/g' <<< $f )"
                      done





                      share|improve this answer














                      find . -maxdepth 1 -type f -name '*.flac' | while IFS= read -r f; do
                      ffmpeg -i "$f" -acodec libmp3lame "$( sed -e's/.flac/.mp3/g' <<< $f )"
                      done






                      share|improve this answer














                      share|improve this answer



                      share|improve this answer








                      edited Aug 16 '15 at 10:38

























                      answered Feb 12 '14 at 16:28









                      X Tian

                      7,50111936




                      7,50111936







                      • 1




                        sed expression needs an ending '
                        – Jaime M.
                        Aug 14 '15 at 16:15












                      • 1




                        sed expression needs an ending '
                        – Jaime M.
                        Aug 14 '15 at 16:15







                      1




                      1




                      sed expression needs an ending '
                      – Jaime M.
                      Aug 14 '15 at 16:15




                      sed expression needs an ending '
                      – Jaime M.
                      Aug 14 '15 at 16:15










                      up vote
                      1
                      down vote













                      I took everything I found here (and maybe on some other sites) and created a small tool to not only create mp3s of flacs recursively, but also preserve relative paths to create them elsewhere with multithread support.



                      oh, and yes, I see, I didn't use ffmpeg in that case, because my OSMC didn't provide packages for ffmpeg, only avconv, but since you're already here, I guess you know, it's "basically" the same - at least for the most important part. Just replace the command "avconv" with "ffmpeg". My first runs were with the ffmpeg bin and the exact same options.



                      I am by no means a bash hacker, but I managed it, as my first bashscript with the given demands, and maybe someone will benefit.
                      I am open for any suggestions from your side, but so far it works for me.



                      my script to spin up the 4 instances, one for each core, is like this:



                      #!/bin/bash
                      # this should be quite self-explanatory
                      for i in 1..4
                      do
                      echo "started instance no: $i"
                      /home/osmc/transform.sh . &
                      # sleeping time can be shorter, this is just so, that
                      # not all 4 processes will want to start with the same
                      # file, during runtime collisions should not become an issue
                      sleep 5
                      done
                      echo "all instances started"


                      And the worker script like this:



                      #!/bin/bash
                      # take care of spaces
                      IFS=$'n'
                      # my music folders, remote is the source, local the target dir
                      remote=/mnt/music/FLAC
                      local=/mnt/1tb/mp3
                      # for all flac files start loop
                      for i in $(find $remote -type f -iname '*.flac' );
                      do
                      ## SET VARIABLES for PATHS and FILENAMES
                      ## this might be able to be super short with sed and complex one-liner,
                      ## but I s*ck at regex
                      fullfile=$i
                      # strip extension
                      filename="$i##*/"
                      # add new extension
                      filename="$filename%.*.mp3"
                      # get full dirname from inputfile
                      fulldir=$(dirname "$i")
                      # strip leading dirs from full input dir
                      # count the dirs, add two, then you're good.
                      reldir="$(echo $fulldir | cut -d'/' -f5-)"
                      # some subdirs in my collection even have a flac subdir, you might
                      # ignore this, it strips only if it exists
                      reldir=$reldir//flac
                      # combine target dir and relative dir
                      outdir="$local/$reldir"
                      # generate the full output filename for conversion
                      outfile="$outdir/$filename"
                      # create whole target directory - yes, I need it only once, but hey,
                      # it works, didn't want to start a if not exist statement... should I?
                      mkdir -p "$outdir"
                      # run conversion - finally... you may want or need to replace
                      # "avconv" with "ffmpeg"
                      avconv -n -nostats -loglevel info -i "$fullfile" -codec:a libmp3lame -qscale:a 0 "$outfile"
                      done


                      which can be found at
                      https://github.com/erdnuesse/flac-to-mp3



                      Regards,
                      Kay






                      share|improve this answer






















                      • welcome aboard, good effort. +1
                        – Alex Stragies
                        Jan 12 at 18:00














                      up vote
                      1
                      down vote













                      I took everything I found here (and maybe on some other sites) and created a small tool to not only create mp3s of flacs recursively, but also preserve relative paths to create them elsewhere with multithread support.



                      oh, and yes, I see, I didn't use ffmpeg in that case, because my OSMC didn't provide packages for ffmpeg, only avconv, but since you're already here, I guess you know, it's "basically" the same - at least for the most important part. Just replace the command "avconv" with "ffmpeg". My first runs were with the ffmpeg bin and the exact same options.



                      I am by no means a bash hacker, but I managed it, as my first bashscript with the given demands, and maybe someone will benefit.
                      I am open for any suggestions from your side, but so far it works for me.



                      my script to spin up the 4 instances, one for each core, is like this:



                      #!/bin/bash
                      # this should be quite self-explanatory
                      for i in 1..4
                      do
                      echo "started instance no: $i"
                      /home/osmc/transform.sh . &
                      # sleeping time can be shorter, this is just so, that
                      # not all 4 processes will want to start with the same
                      # file, during runtime collisions should not become an issue
                      sleep 5
                      done
                      echo "all instances started"


                      And the worker script like this:



                      #!/bin/bash
                      # take care of spaces
                      IFS=$'n'
                      # my music folders, remote is the source, local the target dir
                      remote=/mnt/music/FLAC
                      local=/mnt/1tb/mp3
                      # for all flac files start loop
                      for i in $(find $remote -type f -iname '*.flac' );
                      do
                      ## SET VARIABLES for PATHS and FILENAMES
                      ## this might be able to be super short with sed and complex one-liner,
                      ## but I s*ck at regex
                      fullfile=$i
                      # strip extension
                      filename="$i##*/"
                      # add new extension
                      filename="$filename%.*.mp3"
                      # get full dirname from inputfile
                      fulldir=$(dirname "$i")
                      # strip leading dirs from full input dir
                      # count the dirs, add two, then you're good.
                      reldir="$(echo $fulldir | cut -d'/' -f5-)"
                      # some subdirs in my collection even have a flac subdir, you might
                      # ignore this, it strips only if it exists
                      reldir=$reldir//flac
                      # combine target dir and relative dir
                      outdir="$local/$reldir"
                      # generate the full output filename for conversion
                      outfile="$outdir/$filename"
                      # create whole target directory - yes, I need it only once, but hey,
                      # it works, didn't want to start a if not exist statement... should I?
                      mkdir -p "$outdir"
                      # run conversion - finally... you may want or need to replace
                      # "avconv" with "ffmpeg"
                      avconv -n -nostats -loglevel info -i "$fullfile" -codec:a libmp3lame -qscale:a 0 "$outfile"
                      done


                      which can be found at
                      https://github.com/erdnuesse/flac-to-mp3



                      Regards,
                      Kay






                      share|improve this answer






















                      • welcome aboard, good effort. +1
                        – Alex Stragies
                        Jan 12 at 18:00












                      up vote
                      1
                      down vote










                      up vote
                      1
                      down vote









                      I took everything I found here (and maybe on some other sites) and created a small tool to not only create mp3s of flacs recursively, but also preserve relative paths to create them elsewhere with multithread support.



                      oh, and yes, I see, I didn't use ffmpeg in that case, because my OSMC didn't provide packages for ffmpeg, only avconv, but since you're already here, I guess you know, it's "basically" the same - at least for the most important part. Just replace the command "avconv" with "ffmpeg". My first runs were with the ffmpeg bin and the exact same options.



                      I am by no means a bash hacker, but I managed it, as my first bashscript with the given demands, and maybe someone will benefit.
                      I am open for any suggestions from your side, but so far it works for me.



                      my script to spin up the 4 instances, one for each core, is like this:



                      #!/bin/bash
                      # this should be quite self-explanatory
                      for i in 1..4
                      do
                      echo "started instance no: $i"
                      /home/osmc/transform.sh . &
                      # sleeping time can be shorter, this is just so, that
                      # not all 4 processes will want to start with the same
                      # file, during runtime collisions should not become an issue
                      sleep 5
                      done
                      echo "all instances started"


                      And the worker script like this:



                      #!/bin/bash
                      # take care of spaces
                      IFS=$'n'
                      # my music folders, remote is the source, local the target dir
                      remote=/mnt/music/FLAC
                      local=/mnt/1tb/mp3
                      # for all flac files start loop
                      for i in $(find $remote -type f -iname '*.flac' );
                      do
                      ## SET VARIABLES for PATHS and FILENAMES
                      ## this might be able to be super short with sed and complex one-liner,
                      ## but I s*ck at regex
                      fullfile=$i
                      # strip extension
                      filename="$i##*/"
                      # add new extension
                      filename="$filename%.*.mp3"
                      # get full dirname from inputfile
                      fulldir=$(dirname "$i")
                      # strip leading dirs from full input dir
                      # count the dirs, add two, then you're good.
                      reldir="$(echo $fulldir | cut -d'/' -f5-)"
                      # some subdirs in my collection even have a flac subdir, you might
                      # ignore this, it strips only if it exists
                      reldir=$reldir//flac
                      # combine target dir and relative dir
                      outdir="$local/$reldir"
                      # generate the full output filename for conversion
                      outfile="$outdir/$filename"
                      # create whole target directory - yes, I need it only once, but hey,
                      # it works, didn't want to start a if not exist statement... should I?
                      mkdir -p "$outdir"
                      # run conversion - finally... you may want or need to replace
                      # "avconv" with "ffmpeg"
                      avconv -n -nostats -loglevel info -i "$fullfile" -codec:a libmp3lame -qscale:a 0 "$outfile"
                      done


                      which can be found at
                      https://github.com/erdnuesse/flac-to-mp3



                      Regards,
                      Kay






                      share|improve this answer














                      I took everything I found here (and maybe on some other sites) and created a small tool to not only create mp3s of flacs recursively, but also preserve relative paths to create them elsewhere with multithread support.



                      oh, and yes, I see, I didn't use ffmpeg in that case, because my OSMC didn't provide packages for ffmpeg, only avconv, but since you're already here, I guess you know, it's "basically" the same - at least for the most important part. Just replace the command "avconv" with "ffmpeg". My first runs were with the ffmpeg bin and the exact same options.



                      I am by no means a bash hacker, but I managed it, as my first bashscript with the given demands, and maybe someone will benefit.
                      I am open for any suggestions from your side, but so far it works for me.



                      my script to spin up the 4 instances, one for each core, is like this:



                      #!/bin/bash
                      # this should be quite self-explanatory
                      for i in 1..4
                      do
                      echo "started instance no: $i"
                      /home/osmc/transform.sh . &
                      # sleeping time can be shorter, this is just so, that
                      # not all 4 processes will want to start with the same
                      # file, during runtime collisions should not become an issue
                      sleep 5
                      done
                      echo "all instances started"


                      And the worker script like this:



                      #!/bin/bash
                      # take care of spaces
                      IFS=$'n'
                      # my music folders, remote is the source, local the target dir
                      remote=/mnt/music/FLAC
                      local=/mnt/1tb/mp3
                      # for all flac files start loop
                      for i in $(find $remote -type f -iname '*.flac' );
                      do
                      ## SET VARIABLES for PATHS and FILENAMES
                      ## this might be able to be super short with sed and complex one-liner,
                      ## but I s*ck at regex
                      fullfile=$i
                      # strip extension
                      filename="$i##*/"
                      # add new extension
                      filename="$filename%.*.mp3"
                      # get full dirname from inputfile
                      fulldir=$(dirname "$i")
                      # strip leading dirs from full input dir
                      # count the dirs, add two, then you're good.
                      reldir="$(echo $fulldir | cut -d'/' -f5-)"
                      # some subdirs in my collection even have a flac subdir, you might
                      # ignore this, it strips only if it exists
                      reldir=$reldir//flac
                      # combine target dir and relative dir
                      outdir="$local/$reldir"
                      # generate the full output filename for conversion
                      outfile="$outdir/$filename"
                      # create whole target directory - yes, I need it only once, but hey,
                      # it works, didn't want to start a if not exist statement... should I?
                      mkdir -p "$outdir"
                      # run conversion - finally... you may want or need to replace
                      # "avconv" with "ffmpeg"
                      avconv -n -nostats -loglevel info -i "$fullfile" -codec:a libmp3lame -qscale:a 0 "$outfile"
                      done


                      which can be found at
                      https://github.com/erdnuesse/flac-to-mp3



                      Regards,
                      Kay







                      share|improve this answer














                      share|improve this answer



                      share|improve this answer








                      edited Jan 12 at 21:53

























                      answered Jan 12 at 17:59









                      Kay Urbach

                      112




                      112











                      • welcome aboard, good effort. +1
                        – Alex Stragies
                        Jan 12 at 18:00
















                      • welcome aboard, good effort. +1
                        – Alex Stragies
                        Jan 12 at 18:00















                      welcome aboard, good effort. +1
                      – Alex Stragies
                      Jan 12 at 18:00




                      welcome aboard, good effort. +1
                      – Alex Stragies
                      Jan 12 at 18:00










                      up vote
                      0
                      down vote













                      For example, if you have multiple avi files:



                      ls *.avi | xargs -I ffmpeg -i .mp3





                      share|improve this answer


























                        up vote
                        0
                        down vote













                        For example, if you have multiple avi files:



                        ls *.avi | xargs -I ffmpeg -i .mp3





                        share|improve this answer
























                          up vote
                          0
                          down vote










                          up vote
                          0
                          down vote









                          For example, if you have multiple avi files:



                          ls *.avi | xargs -I ffmpeg -i .mp3





                          share|improve this answer














                          For example, if you have multiple avi files:



                          ls *.avi | xargs -I ffmpeg -i .mp3






                          share|improve this answer














                          share|improve this answer



                          share|improve this answer








                          edited Dec 29 '15 at 20:00









                          Jeff Schaller

                          34.9k952115




                          34.9k952115










                          answered Dec 29 '15 at 19:39









                          K-FIVE

                          1




                          1




















                              up vote
                              0
                              down vote













                              If it can help ....
                              I've written a small bash script to do this ....
                              You need to have ffmpeg / flac installed.



                              How it works:



                              It takes 2 arguments :



                              1. The folder of your music library (flac/ogg/mp3 ...)

                              2. The destination folder (you need to create it before).

                              It produce :



                              • An exact copy from the source folder into the destination folder, with:

                                • the non flac files copied into.

                                • the flac files transformed to mp3 ( VBR high quality)


                              • A run.sh file with the commands to convert the flac files (this script is executed automatically).


                              #!/bin/bash

                              FLAC_PATH=$1
                              CONV_PATH=$2

                              DEBUG=0;

                              function usage
                              echo "";
                              echo " This script convert all flac files from a folder to mp3 files to a second folder";
                              echo "";
                              echo " Usage :";
                              echo " ./conv.sh Source Folder Destination Folder";
                              echo " note : booth folder must exist before starting this script";
                              echo " files other than flac are copied to the destination folder";
                              echo "";


                              if [ ! -d "$2" ]; then
                              echo "";
                              echo " ERROR : [$2] is not a directory.";
                              usage
                              exit 1
                              fi;

                              if [ ! -d "$2" ]; then
                              echo "";
                              echo " ERROR : [$2] is not a directory.";
                              usage
                              exit 1
                              fi;

                              COMMANDS="run.sh"
                              echo "" > run.sh
                              echo " convert from $FLAC_PATH to $CONV_PATH ";

                              find "$FLAC_PATH" -type f |while read myFile; do
                              SRC_DIR=$myFile%/*
                              SRC_FILE=$myFile##*/
                              DST_DIR=$CONV_PATH/$SRC_DIR
                              mkdir -p "$DST_DIR"
                              # TEST if the file is a flac ....
                              metaflac --show-md5sum "$myFile" 2>/dev/null 1>/dev/null
                              if [ $? -eq 0 ]; then
                              echo -n " *** $myFile [FLAC !] : "
                              DST_FILE=$myFile%.*
                              OUT_PATH="$DST_DIR/$( echo $SRC_FILE | sed -e 's/.flac$/.mp3/')"

                              if [ $DEBUG == 1 ]; then
                              echo " SRC = $myFile";
                              echo " OUT = $OUT_PATH"
                              fi;

                              if [ -f "$OUT_PATH" ]; then
                              echo " exist, do nothing !";
                              else
                              echo " add to compress list !";
                              echo "ffmpeg -y -i "$myFile" -codec:a libmp3lame -q:a 0 -map_metadata 0 -id3v2_version 3 "$OUT_PATH" " >> $COMMANDS
                              fi;

                              else
                              echo -n " *** $SRC_FILE [NOT FLAC] : "
                              if [ -f "$CONV_PATH/$myFile" ]; then
                              echo " exist, do nothing !"
                              else
                              echo " copy."
                              cp "$myFile" "$CONV_PATH/$myFile"
                              fi
                              fi

                              done;

                              echo " And now, CONVERT THE FLAC's!!! "
                              sh run.sh






                              share|improve this answer
























                                up vote
                                0
                                down vote













                                If it can help ....
                                I've written a small bash script to do this ....
                                You need to have ffmpeg / flac installed.



                                How it works:



                                It takes 2 arguments :



                                1. The folder of your music library (flac/ogg/mp3 ...)

                                2. The destination folder (you need to create it before).

                                It produce :



                                • An exact copy from the source folder into the destination folder, with:

                                  • the non flac files copied into.

                                  • the flac files transformed to mp3 ( VBR high quality)


                                • A run.sh file with the commands to convert the flac files (this script is executed automatically).


                                #!/bin/bash

                                FLAC_PATH=$1
                                CONV_PATH=$2

                                DEBUG=0;

                                function usage
                                echo "";
                                echo " This script convert all flac files from a folder to mp3 files to a second folder";
                                echo "";
                                echo " Usage :";
                                echo " ./conv.sh Source Folder Destination Folder";
                                echo " note : booth folder must exist before starting this script";
                                echo " files other than flac are copied to the destination folder";
                                echo "";


                                if [ ! -d "$2" ]; then
                                echo "";
                                echo " ERROR : [$2] is not a directory.";
                                usage
                                exit 1
                                fi;

                                if [ ! -d "$2" ]; then
                                echo "";
                                echo " ERROR : [$2] is not a directory.";
                                usage
                                exit 1
                                fi;

                                COMMANDS="run.sh"
                                echo "" > run.sh
                                echo " convert from $FLAC_PATH to $CONV_PATH ";

                                find "$FLAC_PATH" -type f |while read myFile; do
                                SRC_DIR=$myFile%/*
                                SRC_FILE=$myFile##*/
                                DST_DIR=$CONV_PATH/$SRC_DIR
                                mkdir -p "$DST_DIR"
                                # TEST if the file is a flac ....
                                metaflac --show-md5sum "$myFile" 2>/dev/null 1>/dev/null
                                if [ $? -eq 0 ]; then
                                echo -n " *** $myFile [FLAC !] : "
                                DST_FILE=$myFile%.*
                                OUT_PATH="$DST_DIR/$( echo $SRC_FILE | sed -e 's/.flac$/.mp3/')"

                                if [ $DEBUG == 1 ]; then
                                echo " SRC = $myFile";
                                echo " OUT = $OUT_PATH"
                                fi;

                                if [ -f "$OUT_PATH" ]; then
                                echo " exist, do nothing !";
                                else
                                echo " add to compress list !";
                                echo "ffmpeg -y -i "$myFile" -codec:a libmp3lame -q:a 0 -map_metadata 0 -id3v2_version 3 "$OUT_PATH" " >> $COMMANDS
                                fi;

                                else
                                echo -n " *** $SRC_FILE [NOT FLAC] : "
                                if [ -f "$CONV_PATH/$myFile" ]; then
                                echo " exist, do nothing !"
                                else
                                echo " copy."
                                cp "$myFile" "$CONV_PATH/$myFile"
                                fi
                                fi

                                done;

                                echo " And now, CONVERT THE FLAC's!!! "
                                sh run.sh






                                share|improve this answer






















                                  up vote
                                  0
                                  down vote










                                  up vote
                                  0
                                  down vote









                                  If it can help ....
                                  I've written a small bash script to do this ....
                                  You need to have ffmpeg / flac installed.



                                  How it works:



                                  It takes 2 arguments :



                                  1. The folder of your music library (flac/ogg/mp3 ...)

                                  2. The destination folder (you need to create it before).

                                  It produce :



                                  • An exact copy from the source folder into the destination folder, with:

                                    • the non flac files copied into.

                                    • the flac files transformed to mp3 ( VBR high quality)


                                  • A run.sh file with the commands to convert the flac files (this script is executed automatically).


                                  #!/bin/bash

                                  FLAC_PATH=$1
                                  CONV_PATH=$2

                                  DEBUG=0;

                                  function usage
                                  echo "";
                                  echo " This script convert all flac files from a folder to mp3 files to a second folder";
                                  echo "";
                                  echo " Usage :";
                                  echo " ./conv.sh Source Folder Destination Folder";
                                  echo " note : booth folder must exist before starting this script";
                                  echo " files other than flac are copied to the destination folder";
                                  echo "";


                                  if [ ! -d "$2" ]; then
                                  echo "";
                                  echo " ERROR : [$2] is not a directory.";
                                  usage
                                  exit 1
                                  fi;

                                  if [ ! -d "$2" ]; then
                                  echo "";
                                  echo " ERROR : [$2] is not a directory.";
                                  usage
                                  exit 1
                                  fi;

                                  COMMANDS="run.sh"
                                  echo "" > run.sh
                                  echo " convert from $FLAC_PATH to $CONV_PATH ";

                                  find "$FLAC_PATH" -type f |while read myFile; do
                                  SRC_DIR=$myFile%/*
                                  SRC_FILE=$myFile##*/
                                  DST_DIR=$CONV_PATH/$SRC_DIR
                                  mkdir -p "$DST_DIR"
                                  # TEST if the file is a flac ....
                                  metaflac --show-md5sum "$myFile" 2>/dev/null 1>/dev/null
                                  if [ $? -eq 0 ]; then
                                  echo -n " *** $myFile [FLAC !] : "
                                  DST_FILE=$myFile%.*
                                  OUT_PATH="$DST_DIR/$( echo $SRC_FILE | sed -e 's/.flac$/.mp3/')"

                                  if [ $DEBUG == 1 ]; then
                                  echo " SRC = $myFile";
                                  echo " OUT = $OUT_PATH"
                                  fi;

                                  if [ -f "$OUT_PATH" ]; then
                                  echo " exist, do nothing !";
                                  else
                                  echo " add to compress list !";
                                  echo "ffmpeg -y -i "$myFile" -codec:a libmp3lame -q:a 0 -map_metadata 0 -id3v2_version 3 "$OUT_PATH" " >> $COMMANDS
                                  fi;

                                  else
                                  echo -n " *** $SRC_FILE [NOT FLAC] : "
                                  if [ -f "$CONV_PATH/$myFile" ]; then
                                  echo " exist, do nothing !"
                                  else
                                  echo " copy."
                                  cp "$myFile" "$CONV_PATH/$myFile"
                                  fi
                                  fi

                                  done;

                                  echo " And now, CONVERT THE FLAC's!!! "
                                  sh run.sh






                                  share|improve this answer












                                  If it can help ....
                                  I've written a small bash script to do this ....
                                  You need to have ffmpeg / flac installed.



                                  How it works:



                                  It takes 2 arguments :



                                  1. The folder of your music library (flac/ogg/mp3 ...)

                                  2. The destination folder (you need to create it before).

                                  It produce :



                                  • An exact copy from the source folder into the destination folder, with:

                                    • the non flac files copied into.

                                    • the flac files transformed to mp3 ( VBR high quality)


                                  • A run.sh file with the commands to convert the flac files (this script is executed automatically).


                                  #!/bin/bash

                                  FLAC_PATH=$1
                                  CONV_PATH=$2

                                  DEBUG=0;

                                  function usage
                                  echo "";
                                  echo " This script convert all flac files from a folder to mp3 files to a second folder";
                                  echo "";
                                  echo " Usage :";
                                  echo " ./conv.sh Source Folder Destination Folder";
                                  echo " note : booth folder must exist before starting this script";
                                  echo " files other than flac are copied to the destination folder";
                                  echo "";


                                  if [ ! -d "$2" ]; then
                                  echo "";
                                  echo " ERROR : [$2] is not a directory.";
                                  usage
                                  exit 1
                                  fi;

                                  if [ ! -d "$2" ]; then
                                  echo "";
                                  echo " ERROR : [$2] is not a directory.";
                                  usage
                                  exit 1
                                  fi;

                                  COMMANDS="run.sh"
                                  echo "" > run.sh
                                  echo " convert from $FLAC_PATH to $CONV_PATH ";

                                  find "$FLAC_PATH" -type f |while read myFile; do
                                  SRC_DIR=$myFile%/*
                                  SRC_FILE=$myFile##*/
                                  DST_DIR=$CONV_PATH/$SRC_DIR
                                  mkdir -p "$DST_DIR"
                                  # TEST if the file is a flac ....
                                  metaflac --show-md5sum "$myFile" 2>/dev/null 1>/dev/null
                                  if [ $? -eq 0 ]; then
                                  echo -n " *** $myFile [FLAC !] : "
                                  DST_FILE=$myFile%.*
                                  OUT_PATH="$DST_DIR/$( echo $SRC_FILE | sed -e 's/.flac$/.mp3/')"

                                  if [ $DEBUG == 1 ]; then
                                  echo " SRC = $myFile";
                                  echo " OUT = $OUT_PATH"
                                  fi;

                                  if [ -f "$OUT_PATH" ]; then
                                  echo " exist, do nothing !";
                                  else
                                  echo " add to compress list !";
                                  echo "ffmpeg -y -i "$myFile" -codec:a libmp3lame -q:a 0 -map_metadata 0 -id3v2_version 3 "$OUT_PATH" " >> $COMMANDS
                                  fi;

                                  else
                                  echo -n " *** $SRC_FILE [NOT FLAC] : "
                                  if [ -f "$CONV_PATH/$myFile" ]; then
                                  echo " exist, do nothing !"
                                  else
                                  echo " copy."
                                  cp "$myFile" "$CONV_PATH/$myFile"
                                  fi
                                  fi

                                  done;

                                  echo " And now, CONVERT THE FLAC's!!! "
                                  sh run.sh







                                  share|improve this answer












                                  share|improve this answer



                                  share|improve this answer










                                  answered Aug 4 '17 at 11:21









                                  Laurent

                                  1




                                  1




















                                      up vote
                                      0
                                      down vote













                                      for a in *.flac



                                      do
                                      OUTF=echo "$a" | sed s/.flac$/.mp3/g



                                      ffmpeg -i "$a" -acodec libmp3lame "$OUTF"



                                      done






                                      share|improve this answer
















                                      • 1




                                        welcome to U&L, your answer hardly add anything to @Ketan accepted answer four years ago.
                                        – Archemar
                                        Dec 29 '17 at 8:45














                                      up vote
                                      0
                                      down vote













                                      for a in *.flac



                                      do
                                      OUTF=echo "$a" | sed s/.flac$/.mp3/g



                                      ffmpeg -i "$a" -acodec libmp3lame "$OUTF"



                                      done






                                      share|improve this answer
















                                      • 1




                                        welcome to U&L, your answer hardly add anything to @Ketan accepted answer four years ago.
                                        – Archemar
                                        Dec 29 '17 at 8:45












                                      up vote
                                      0
                                      down vote










                                      up vote
                                      0
                                      down vote









                                      for a in *.flac



                                      do
                                      OUTF=echo "$a" | sed s/.flac$/.mp3/g



                                      ffmpeg -i "$a" -acodec libmp3lame "$OUTF"



                                      done






                                      share|improve this answer












                                      for a in *.flac



                                      do
                                      OUTF=echo "$a" | sed s/.flac$/.mp3/g



                                      ffmpeg -i "$a" -acodec libmp3lame "$OUTF"



                                      done







                                      share|improve this answer












                                      share|improve this answer



                                      share|improve this answer










                                      answered Dec 29 '17 at 8:18









                                      Peter McConnell

                                      1




                                      1







                                      • 1




                                        welcome to U&L, your answer hardly add anything to @Ketan accepted answer four years ago.
                                        – Archemar
                                        Dec 29 '17 at 8:45












                                      • 1




                                        welcome to U&L, your answer hardly add anything to @Ketan accepted answer four years ago.
                                        – Archemar
                                        Dec 29 '17 at 8:45







                                      1




                                      1




                                      welcome to U&L, your answer hardly add anything to @Ketan accepted answer four years ago.
                                      – Archemar
                                      Dec 29 '17 at 8:45




                                      welcome to U&L, your answer hardly add anything to @Ketan accepted answer four years ago.
                                      – Archemar
                                      Dec 29 '17 at 8:45










                                      up vote
                                      0
                                      down vote













                                      To recursively convert in mp3 all the flac or wav files in nested folders, I used this command:



                                      find '~/Music/' -iname '*.flac' , -iname '*.wav' -exec bash -c 'D=$(dirname ""); B=$(basename ""); mkdir "$D/mp3/"; ffmpeg -i "" -ab 320k -map_metadata 0 -id3v2_version 3 -acodec libmp3lame "$D/mp3/$B%.*.mp3"' ;


                                      It will create a folder named "mp3" inside the one with flac or wav files and, inside the mp3 folder, it will save relative mp3 files with a bitrate of 320kbps, without keeping the old file extension in the name.






                                      share|improve this answer


























                                        up vote
                                        0
                                        down vote













                                        To recursively convert in mp3 all the flac or wav files in nested folders, I used this command:



                                        find '~/Music/' -iname '*.flac' , -iname '*.wav' -exec bash -c 'D=$(dirname ""); B=$(basename ""); mkdir "$D/mp3/"; ffmpeg -i "" -ab 320k -map_metadata 0 -id3v2_version 3 -acodec libmp3lame "$D/mp3/$B%.*.mp3"' ;


                                        It will create a folder named "mp3" inside the one with flac or wav files and, inside the mp3 folder, it will save relative mp3 files with a bitrate of 320kbps, without keeping the old file extension in the name.






                                        share|improve this answer
























                                          up vote
                                          0
                                          down vote










                                          up vote
                                          0
                                          down vote









                                          To recursively convert in mp3 all the flac or wav files in nested folders, I used this command:



                                          find '~/Music/' -iname '*.flac' , -iname '*.wav' -exec bash -c 'D=$(dirname ""); B=$(basename ""); mkdir "$D/mp3/"; ffmpeg -i "" -ab 320k -map_metadata 0 -id3v2_version 3 -acodec libmp3lame "$D/mp3/$B%.*.mp3"' ;


                                          It will create a folder named "mp3" inside the one with flac or wav files and, inside the mp3 folder, it will save relative mp3 files with a bitrate of 320kbps, without keeping the old file extension in the name.






                                          share|improve this answer














                                          To recursively convert in mp3 all the flac or wav files in nested folders, I used this command:



                                          find '~/Music/' -iname '*.flac' , -iname '*.wav' -exec bash -c 'D=$(dirname ""); B=$(basename ""); mkdir "$D/mp3/"; ffmpeg -i "" -ab 320k -map_metadata 0 -id3v2_version 3 -acodec libmp3lame "$D/mp3/$B%.*.mp3"' ;


                                          It will create a folder named "mp3" inside the one with flac or wav files and, inside the mp3 folder, it will save relative mp3 files with a bitrate of 320kbps, without keeping the old file extension in the name.







                                          share|improve this answer














                                          share|improve this answer



                                          share|improve this answer








                                          edited Jun 2 at 23:33

























                                          answered Jun 2 at 23:18









                                          Riccardo Volpe

                                          1013




                                          1013




















                                              up vote
                                              0
                                              down vote













                                              GNU Parallel is make for these kind of tasks:



                                              # change to the home directory
                                              cd ~/music
                                              # convert all *.flac files
                                              parallel ffmpeg -i -acodec libmp3lame ..mp3 ::: *.flac
                                              # (optional: check whether there are any errors printed on the terminal)
                                              sleep 60


                                              It will run the jobs in parallel (one job per cpu core) and make sure the output on the terminal is not mixed together.






                                              share|improve this answer
























                                                up vote
                                                0
                                                down vote













                                                GNU Parallel is make for these kind of tasks:



                                                # change to the home directory
                                                cd ~/music
                                                # convert all *.flac files
                                                parallel ffmpeg -i -acodec libmp3lame ..mp3 ::: *.flac
                                                # (optional: check whether there are any errors printed on the terminal)
                                                sleep 60


                                                It will run the jobs in parallel (one job per cpu core) and make sure the output on the terminal is not mixed together.






                                                share|improve this answer






















                                                  up vote
                                                  0
                                                  down vote










                                                  up vote
                                                  0
                                                  down vote









                                                  GNU Parallel is make for these kind of tasks:



                                                  # change to the home directory
                                                  cd ~/music
                                                  # convert all *.flac files
                                                  parallel ffmpeg -i -acodec libmp3lame ..mp3 ::: *.flac
                                                  # (optional: check whether there are any errors printed on the terminal)
                                                  sleep 60


                                                  It will run the jobs in parallel (one job per cpu core) and make sure the output on the terminal is not mixed together.






                                                  share|improve this answer












                                                  GNU Parallel is make for these kind of tasks:



                                                  # change to the home directory
                                                  cd ~/music
                                                  # convert all *.flac files
                                                  parallel ffmpeg -i -acodec libmp3lame ..mp3 ::: *.flac
                                                  # (optional: check whether there are any errors printed on the terminal)
                                                  sleep 60


                                                  It will run the jobs in parallel (one job per cpu core) and make sure the output on the terminal is not mixed together.







                                                  share|improve this answer












                                                  share|improve this answer



                                                  share|improve this answer










                                                  answered Jun 3 at 8:36









                                                  Ole Tange

                                                  11.7k1446103




                                                  11.7k1446103




















                                                      up vote
                                                      0
                                                      down vote













                                                      I realize this comes quite late, but for memory, see my script "batchaudiocvt" on sourceforge. It is a (quite large) shell script designed for efficient mass conversion of audio files, between many formats. In particular, it makes its best to convert the usual tags.






                                                      share|improve this answer








                                                      New contributor




                                                      user283537 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                                      Check out our Code of Conduct.





















                                                        up vote
                                                        0
                                                        down vote













                                                        I realize this comes quite late, but for memory, see my script "batchaudiocvt" on sourceforge. It is a (quite large) shell script designed for efficient mass conversion of audio files, between many formats. In particular, it makes its best to convert the usual tags.






                                                        share|improve this answer








                                                        New contributor




                                                        user283537 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                                        Check out our Code of Conduct.



















                                                          up vote
                                                          0
                                                          down vote










                                                          up vote
                                                          0
                                                          down vote









                                                          I realize this comes quite late, but for memory, see my script "batchaudiocvt" on sourceforge. It is a (quite large) shell script designed for efficient mass conversion of audio files, between many formats. In particular, it makes its best to convert the usual tags.






                                                          share|improve this answer








                                                          New contributor




                                                          user283537 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                                          Check out our Code of Conduct.









                                                          I realize this comes quite late, but for memory, see my script "batchaudiocvt" on sourceforge. It is a (quite large) shell script designed for efficient mass conversion of audio files, between many formats. In particular, it makes its best to convert the usual tags.







                                                          share|improve this answer








                                                          New contributor




                                                          user283537 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                                          Check out our Code of Conduct.









                                                          share|improve this answer



                                                          share|improve this answer






                                                          New contributor




                                                          user283537 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                                          Check out our Code of Conduct.









                                                          answered 18 mins ago









                                                          user283537

                                                          1




                                                          1




                                                          New contributor




                                                          user283537 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                                          Check out our Code of Conduct.





                                                          New contributor





                                                          user283537 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                                          Check out our Code of Conduct.






                                                          user283537 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                                          Check out our Code of Conduct.



























                                                               

                                                              draft saved


                                                              draft discarded















































                                                               


                                                              draft saved


                                                              draft discarded














                                                              StackExchange.ready(
                                                              function ()
                                                              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f114908%2fbash-script-to-convert-all-flac-to-mp3-with-ffmpeg%23new-answer', 'question_page');

                                                              );

                                                              Post as a guest













































































                                                              Popular posts from this blog

                                                              How to check contact read email or not when send email to Individual?

                                                              Bahrain

                                                              Postfix configuration issue with fips on centos 7; mailgun relay