컴퓨터 엑셀 워드 포토샵 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Friday, November 03, 2006

Perl/펄] 파일명에서, 확장자 구하는 함수; Get File Extension Only


주어진 파일 이름에서, 파일명 끝의 확장자만 알아내는 방법입니다.

우선 rindex 함수로, 파일명 끝에서부터 시작하여 마침표의 위치를 파악한 후,

그 위치를 이용하여 substr 함수로, 파일명의 맨 끝에서 마침표 바로 직전까지의 문자열만 얻는 것입니다.


PERL: 파일 이름에서 확장자만 추출 함수 예제


#!/usr/bin/perl
use strict; use warnings;

=pod
편의상, <txt> 이런 식으로 출력했지만
함수 자체는
txt
이런 값을 반환합니다.
=cut


  print "<", &getFileExtension("test.txt"), ">\n";
  # 출력 결과: <txt>


  print "<", &getFileExtension("foo.c"), ">\n";
  # 출력 결과: <c>


  print "<", &getFileExtension("APPLE.JPEG"), ">\n";
  # 출력 결과: <JPEG>


  # 공백 들어간 파일명에서
  print "<", &getFileExtension("My Test.doc"), ">\n";
  # 출력 결과: <doc>


  # 점이 2개 있는 파일명에서
  print "<", &getFileExtension("google.ani.gif"), ">\n";
  # 출력 결과: <gif>


  # 공백 있는 확장자명에서
  print "<", &getFileExtension("hmmmm.foo bar"), ">\n";
  # 출력 결과: <foo bar>


  # 확장자가 없는 파일에서
  print "<", &getFileExtension("COOL"), ">\n";
  # 출력 결과: <> (없음; 빈 문자열)


  # 유닉스 히든파일명에서
  print "<", &getFileExtension(".bash_history"), ">\n";
  # 출력 결과: <> (없음; 빈 문자열)




# 확장자 없는 경우에는 $pos 가 -1
# 유닉스 히든파일은 $pos 가 0

sub getFileExtension {
  my $pos = rindex $_[0], ".";
  return "" if $pos < 1;
  substr $_[0], $pos + 1;
}


유닉스/리눅스에는
.bash_history
이렇게 파일명 앞에 점을 붙여서 "숨김 파일" 즉 히든파일임을 나타냅니다.

.bash_history 라는 파일명의 경우, 파일명은 bash_history 이고, 확장자는 없습니다. 따라서 확장자가 없다고 나옵니다.

다만 MS윈도우의 탐색기에서는 bash_history 이 부분을 확장자로 인식합니다.




정규식으로 확장자 매치 방법: ▶▶ Perl 펄] 정규식 확장자 추출, 파일명에서; Regex Filename Extension

0 Comments:

Post a Comment

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Previous Posts
Monthly Archives
Top