mediastats 611 B

12345678910111213141516171819
  1. #!/bin/sh
  2. usage () {
  3. cat <<EOF>&2
  4. Usage: ${0##*/} FOLDERS
  5. Sort media files in FOLDERS by duration.
  6. EOF
  7. }
  8. [ $# -eq 0 ] && usage && exit 1
  9. [ "$1" = "-h" ] && usage && exit
  10. [ "$1" = "--" ] && shift
  11. for i; do
  12. find "$i" -type f -exec mediainfo {} +
  13. done | awk '/^General$/ {while($1!="Complete") getline; gsub(/^[^:]*: /,""); path=$0; while($0!="") {if($1=="Duration"){gsub(/^[^:]*: /,""); duration=$0; time=0; for(i=1;i<=NF;i+=2){if($(i+1)=="h") time+=$i*3600; if($(i+1)=="min") time+=$i*60; if($(i+1)=="s") time+=$i }; printf "%s %s '"'"'%s'"'"'\n", time, duration, path; break} else {getline}}}' | sort -n