반달가면 이글루에서 백업 - http://bahndal.egloos.com/595136
특정 파일에 대해 작업을 할 때, 해당 파일의 디렉토리는 제외하고 파일명만 추출해야 할 필요가 있는 경우가 생기면 basename으로 간편하게 해결할 수 있다. 아래의 예시를 보자.
# /home/john/Documents/my_doc.txt에서 파일명만 추출
basename "/home/john/Documents/my_doc.txt"
my_doc.txt
만약 파일명 맨 뒤에 있는 확장자를 제거하고 싶다면 -s 옵션을 추가해 주자.
# .txt 확장자 제거
basename -s ".txt" "/home/john/Documents/my_doc.txt"
my_doc
여러개의 인자를 사용하고 싶다면 -a 옵션을 사용하면 된다.
basename -a "/home/john/Documents/my_doc.txt" "/home/john/Downloads/my_data.bin"
my_doc.txt
my_data.bin
예를 들어 디렉토리 정보가 포함된 특정 파일이 있을 때, 해당 파일을 임시 디렉토리에 복사하여 뭔가 작업을 하는 상황을 생각해 보자. 아래의 간단한 예시를 보면 금방 감이 잡힐 것이다.
# 임시 디렉토리를 지정하여 변수 tmp_dir에 저장
tmp_dir="/tmp/"
# 파일 정보를 사용자 입력으로 받아 변수 file_info에 저장
read -p "작업할 파일을 지정해 주세요: " file_info
# 임시 디렉토리에 파일 복사
cp "$file_info" "$tmp_dir"
# 파일명만 추출해서 변수 f_name에 저장
f_name=`basename "$file_info"`
# 복사된 파일에 대한 grep 명령을 실행, 문자열 "ABCD"가 있는지 확인
grep "ABCD" "$tmp_dir/$f_name"
'bash script' 카테고리의 다른 글
[bash: strings] 바이너리 파일에서 문자열만 골라 출력하기 (0) | 2023.08.01 |
---|---|
[bash: timeout] 특정 명령어/프로세스에 대한 실행 시간 제한 설정 (0) | 2023.08.01 |
[bash: awk] awk에서 문자열을 분할하여 배열(array)에 저장하기 (split) (0) | 2023.08.01 |
[bash: awk] 현재 행에서 특정 문자열이 존재할 때 바로 이전 행을 출력하기 (0) | 2023.07.28 |
[bash: source] 스크립트에서 환경설정 파일 활용하기 (0) | 2023.07.28 |