Bash에서 (3개) 매개변수를 사용하여 하한을 상한으로 변경하는 방법은 무엇입니까? [폐쇄]

Bash에서 (3개) 매개변수를 사용하여 하한을 상한으로 변경하는 방법은 무엇입니까? [폐쇄]
  1. 명령줄의 인수를 통해 파일 이름을 아래에서 위로 또는 위에서 아래로 변경하는 bash 스크립트를 만들어야 합니다. 따라서 명령줄에 입력하면 다음과 같습니다.

./bashScript 상향식

그러면 디렉터리의 모든 파일이 소문자에서 대문자로 변경되어야 합니다.

  1. 또한 특정 파일 하나만 변경할 수 있도록 하는 세 번째 매개변수도 추가해야 했습니다. 예를 들어 다음 명령줄을 입력할 수 있어야 합니다.

    ./bashScript 파일 이름

답변1

bash변수의 대소문자를 변경하는 연산자는 ${var^^*}-upper 및 ${var,,*}to-lower입니다. 따라서 다음과 같습니다.

#! /bin/bash -
die() { printf >&2 '%s\n' "$@"; exit 1; }
usage() { die "Usage:" "  $0 "{"lower upp","upper low"}"er [files]"; }

(( $# >= 2 )) || usage 
from=$1 to=$2; shift 2

[[ $from   =  @(upper|lower) ]] &&
[[ $to     =  @(upper|lower) ]] &&
[[ "$from" != "$to"          ]] || usage

shopt -s nullglob dotglob
IFS= ret=0

(( $# > 0 )) || set -- *[[:$from:]]*

for file do
  case $to in
    (upper) newfile=${file^^*};;
    (lower) newfile=${file,,*};;
  esac
  [[ "$file" = "$newfile" ]] ||
    echo mv -i -- "$file" "$newfile" ||
    ret=$?
done
exit "$ret"

echo테스트 완료 후 삭제하세요.

답변2

숙제가 없으면 Larry Wall의 것을 사용하세요rename

  • rename 'y/A-Z/a-z/' *소문자로 변환합니다.
  • rename 'y/a-z/A-Z/' *대문자로 변환합니다.

이것이 모든 언어에서 작동하는지 모르겠지만 이것은 매뉴얼의 예입니다.

관련 정보