Bash:Filename
Bash에서 파일이름을 조작하는 방법을 정리한다.
Example
Path를제거하고 파일명 추출:
임의의 확장자 제거:
More examples:
$ FILE=prog.tar.gz
$ echo ${FILE%%.*}
prog
$ echo ${FILE%.*}
prog.tar
$ echo ${FILE#*.}
tar.gz
$ echo ${FILE##*.}
gz
Example
if [[ -z $INPUT_PATH ]]; then
print_error "Input file is required"
exit 1
fi
INPUT_FILENAME="${INPUT_PATH##*/}"
INPUT_PARENT="${INPUT_PATH%/*}"
INPUT_NAME=${INPUT_FILENAME%.*}
INPUT_EXT=${INPUT_FILENAME#*.}
echo "$INPUT_PARENT"
echo "$INPUT_NAME"
echo "$INPUT_EXT"
Rename number
번호 순서로 이름을 변경한다.
$ IDX=1 && for i in *.jpg; do printf "%s\nmonero-01-%02d.jpg\n" "$i" "$IDX"; let "IDX = IDX + 1"; done | xargs -n 2 mv
Bash Function
tar.gz
과 같은 두 번째 확장자를 포함하여 확장자 검색 및 확장자를 제거한 파일명 획득 함수는 아래와 같다.
function getFileExtension {
local name=$1
local ext=`echo "${name#${name%.tar.*}}"`
if [[ -z $ext ]]; then
echo "${name#${name%.*}}"
else
echo $ext
fi
}
function getFileName {
local name=$1
local ext=`getFileExtension $name`
echo "${name%${ext}}"
}
Simple version
See also
Favorite site
- 파일 이름과 확장자 추출 - sh
- Extract File Basename Without Path and Extension in Bash
- The Right Way to Get the Directory of a bash Script 1
References
-
The_Right_Way_to_Get_the_Directory_of_a_bash_Script.pdf ↩