rename_by_pattern: переименовать файл, изменив его актуальное имя в соответствии с переданным шаблоном

  1. #!/usr/bin/bash
  2.  
  3. # rename_by_pattern [MV_ARGS..] -p|--pattern PATTERN [MV_ARGS..] SOURCE
  4.  
  5. # TODO: follow symlink recursively to do not rename a symlink but its target
  6.  
  7. declare -a MV_ARGUMENTS
  8. declare PATTERN
  9.  
  10. eval "SOURCE=\$$#"
  11. set -- "${@:1:(( $# - 1 ))}"
  12.  
  13. while (( $# )); do
  14.     case "$1" in
  15.     -p|--pattern)
  16.         if declare -p "$PATTERN" >& /dev/null; then
  17.             echo "You specified a pattern several or more times"
  18.             exit 1
  19.         fi
  20.         PATTERN="$2"
  21.         shift 2
  22.         ;;
  23.     *)
  24.         MV_ARGUMENTS+=( "$1" )
  25.         shift
  26.         ;;
  27.     esac
  28. done
  29.  
  30. mv "${MV_ARGUMENTS[@]}" "$SOURCE" "$(sed -r "$PATTERN" <<< "$SOURCE")"
Синтаксис вызова на третьей стоке. Демонстрация работы http://ix.io/yDG

Значимый эффект достигается при использовании iterator http://ix.io/yDI

  • +3
  • views 637
  • pavelshuvalov pavelshuvalov
  • comments 0

Реклама

Мы в соцсетях

tw tg yt gt