sh 프로그래밍 질문

taegyu의 이미지

a001.dat a002.dat a003.dat ... a200.dat 와 같은 데이터 파일들이 있습니다.
testexe라는 프로그램을 이용하여 위의 데이터 파일들을 처리해야 하는데, 데이터 파일들이 200개가 넘어서 쉘 프로그램으로 처리하려고 합니다.

문제는 데이터 파일명(확장자 없이)의 리스트를 얻는 방법인데
쉘 함수들 중에서 적절한 함수를 찾지 못하겠습니다.

어떻게 해결할 수 있는 방법이 없을까요?

monpetit의 이미지

꼭 shell 내부 함수나 문법만 사용하려고 해선 문제를 해결하기가 쉽지 않습니다. sed, awk 등의 UNIX의 기본 유틸리티를 적극 활용하세요.

#!/bin/sh
for i in $(ls | sed 's/\..*//g')
do
    echo item: $i
done
crimsoncream의 이미지

suffix를 알고 계신 경우이니까.

for i in $(ls *.suffix); do basename $i .suffix; done

하시는게 좀 더 쉬울 것 같군요
그리고 sed를 쓰실 경우라면
sed 's/\.[^.]*$//g'

를 쓰시는게 basename에 .를 포함하고 있는 경우를 고려할 때 좀 더 안전할 것 같습니다.

오늘 우리는 동지를 땅에 묻었습니다. 그러나 땅은 이제 우리들의 것입니다.
아직도 우리의 적은 강합니다. 그러나 우리는 그들보다 많습니다.
항상 많을 것입니다.

Fe.head의 이미지

여러가지가 나오네요..

저도 동참을..

for i in *.dat; do
     j=${i%%\.dat}
     echo $j
done

고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"

alfalf의 이미지

제 생각이지만 속도는 이게 빠르지 않을까요?

ls | cut -f1 -d"." | while read name
do
     echo "Item: ${name}"
done
무한포옹의 이미지

입력되는 파일명을 볼때 .dat 같은 고정된 확장자명 같네요.

제 생각에는 ${변수%삭제확장자}를 쓰는 두 단 위의 해법에

한표!

ps: only for B*sh계열인가요?

-------------------------------
== warning 대부분 틀린 얘기입니다 warning ===

taegyu의 이미지

많은 분들이 답변들을 주셨네요.
덕분에 문제를 해결할 수 있었습니다.

친절히 답을 해주신 모든 분들께 감사드립니다. 꾸벅

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.