- 명령줄의 인수를 통해 파일 이름을 아래에서 위로 또는 위에서 아래로 변경하는 bash 스크립트를 만들어야 합니다. 따라서 명령줄에 입력하면 다음과 같습니다.
./bashScript 상향식
그러면 디렉터리의 모든 파일이 소문자에서 대문자로 변경되어야 합니다.
또한 특정 파일 하나만 변경할 수 있도록 하는 세 번째 매개변수도 추가해야 했습니다. 예를 들어 다음 명령줄을 입력할 수 있어야 합니다.
./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/' *
대문자로 변환합니다.
이것이 모든 언어에서 작동하는지 모르겠지만 이것은 매뉴얼의 예입니다.