Advertisement
freezmi

rename.sh

Dec 22nd, 2024 (edited)
199
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.35 KB | Source Code | 0 0
  1. #!/bin/bash
  2.  
  3. replace_spaces() {
  4.     sed "s|[ ]\{1,\}|_|g"  <<< "${1}"
  5. }
  6.  
  7. remove_misc() {
  8.     echo "$1" | \
  9.         sed \
  10.             -e "s|'||g" \
  11.             -e "s|\.\{2,\}|_|g" \
  12.             -e "s|,||g" \
  13.             -e "s|\._|-|g" \
  14.             -e "s|\.-|-|g" \
  15.             -e "s|-\.|\.|g" \
  16.             -e "s|_\.|\.|g" \
  17.             -e "s|=|_|g" \
  18.             -e "s|&|_|g" \
  19.             -e "s|!||g" \
  20.             -e "s|(||g" \
  21.             -e "s|)||g" \
  22.             -e "s|\[||g" \
  23.             -e "s|\]||g" \
  24.             -e "s|{||g" \
  25.             -e "s|}||g" \
  26.             -e "s|~||g" \
  27.             -e "s|-_|-|g" \
  28.             -e "s|_-|-|g" \
  29.             -e "s|- |-|g" \
  30.             -e "s| -|-|g" \
  31.             -e "s|--|-|g" \
  32.             -e "s|\:|-|g" | \
  33.         sed -e 's|[_]\{2,\}|_|g'
  34. }
  35.  
  36. remove_custom() {
  37.     sed "s|${2}||g" <<< "${1}"
  38. }
  39.  
  40. lowercase() {
  41.     tr '[:upper:]' '[:lower:]' <<< "${1}"
  42. }
  43.  
  44. numbering() {
  45.     grep -q '^[0-9][0-9][_\.]' <<< "${1}" && \
  46.         sed "s|^\([0-9][0-9]\).\(.*\)|\1-\2|" <<< "${1}" || \
  47.         echo "$1"
  48. }
  49.  
  50. extension() {
  51.     grep -q -e 'mp3$' -e 'ogg$' <<< "${1}" && \
  52.         sed "s|^\(.*\)[-_]\([a-zA-Z0-9]\{3,3\}\)$|\1\.\2|" <<< "${1}" || \
  53.         echo "$1"
  54. }
  55.  
  56. remove_artist() {
  57.     artist=$(basename `pwd`)
  58.     grep -q -e "^${artist}" <<< "${1}" && \
  59.     sed "s|^${artist}||" <<< "${1}" || \
  60.     echo "$1"
  61. }
  62.  
  63. guess_title() {
  64.     title=$(id3info $1 | grep TIT2 | cut -d':' -f2)
  65.     [[ ! -z ${title} ]] && \
  66.         sed "s|^\(.*\)\.\([a-zA-Z0-9]\{3,3\}\)$|\1-${title}\.\2|" <<< "${2}" || \
  67.         echo "$2"
  68. }
  69.  
  70. create_m3u() {
  71.     [ ! -d "${1}" ] && return 1
  72.     cd "${1}"
  73.     find ./ -type f -name '*.mp3' -o -name '*.ogg' | sed 's|^\./||' | sort > 00-album.m3u
  74.     cd - &>/dev/null
  75. }
  76.  
  77.  
  78. find ./ -mindepth 1 -maxdepth 1 | while read entry; do
  79.     entry=`sed 's|^\./||' <<< "${entry}"`
  80.     [ "${entry}" = "" ] && continue
  81.     newentry="${entry}"
  82.     [ "$1" != "" ] && newentry=`remove_custom "${newentry}" "$1"`
  83.     [ "$2" != "" ] && newentry=`remove_custom "${newentry}" "$2"`
  84.     newentry=`remove_misc "${newentry}"`
  85.     newentry=`lowercase "${newentry}"`
  86.     newentry=`replace_spaces "${newentry}"`
  87.     [ -f "${entry}" ] && newentry=`numbering "${newentry}"`
  88.     [ -f "${entry}" ] && newentry=`extension "${newentry}"`
  89.     [ -d "${entry}" ] && newentry=`remove_artist "${newentry}"`
  90.     [[ $(wc -c <<< "${entry}") -le 7 ]] && newentry=`guess_title "${entry}" "${newentry}"`
  91.     if [[ "${entry}" != "${newentry}" && ! -z ${newentry} ]]; then
  92.         echo "${entry} -> ${newentry}"
  93.         mv -- "${entry}" "${newentry}"
  94.     fi
  95. done
  96.  
  97. # change perms
  98. find ./ -type d -exec chmod 755 {} \;
  99. find ./ -type f -exec chmod 644 {} \;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement