#!/bin/sh FULLPATH=$1 FILE=${FULLPATH##*/} FILENAME=${FILE%.*} EXT=${FILE##*.} #echo "FILENAME=$FILENAME" #echo "EXTension=$EXT" shift OPTS=$@ echo filename=$FILENAME meta=`mp4info "$FULLPATH" | awk '/Metadata / {sub(/^[ \t]+/, "")};1'` #echo meta=$meta TITLE=`echo "$meta" | awk '/Metadata Name: / {gsub(/Metadata Name: /,""); print }'` ARTIST=`echo "$meta" | awk '/Metadata Artist: / {gsub(/Metadata Artist: /,""); print }'` if [ -z "$TITLE" ] then TITLE="unknown" else echo TITLE=$TITLE fi if [ -z "$ARTIST" ] then ARTIST="unknown" else echo ARTIST=$ARTIST fi TARGET="$ARTIST - $TITLE.$EXT" cp "$FULLPATH" "$TARGET" if [ -n $ "$TARGET" ] then rm "$FULLPATH" fi
Save the above script into an executable file, say mp4fixname.
To fix a filename, just run it and pass the encoded filename.
For example, if the file name is NXJA.m4a, we just run the script as below:
mp4fixname NXJA.m4a
The original filename will be replaced in artist and song name format according to metadata/tags stored in the original file.