fnc 551 B

123456789101112131415161718192021
  1. #!/bin/sh
  2. # File Naming Correction (script)
  3. # Usage: fnc [filename]
  4. [ ! -f "$1" ] && { echo "Error: File '$1' not found"; exit 1; }
  5. file="${1##*/}"
  6. dir="${1%/*}"
  7. # lowercase
  8. base=$(echo "${file%.*}" | tr '[:upper:]' '[:lower:]')
  9. ext=$(echo "$file" | grep -q "\." &&
  10. echo ".${file##*.}" | tr '[:upper:]' '[:lower:]')
  11. # replace whitespaces with single dashes
  12. base=$(echo "$base" | sed 's/\s/-/g;' | tr -s - - |
  13. # lowercase first letter
  14. awk '{printf tolower(substr($0,1,1))} {print substr($0,2)}')
  15. mv -i "$dir/$file" "$dir/$base$ext"