2011-02-17 4 views

답변

2

내 찌르기.

filename=file.dat 
extension=$(echo ${filename}|awk -F\. '{print $2}') 
if [ ${extension} == "dat" ]; then 
    your code here 
fi 

awk로 출력되는 변수 $ {filename} 파이프를 에코합니다. awk를 사용하여 필드 구분 기호를 a로 재설정하십시오. 필드 2 (인쇄 $ 2 부분)를 가져 오십시오

+0

'find '가이 정확한 문제를 해결하기 위해 고안되었을 때 왜'awk'를 사용합니까? – jacobsimeon

18
find . -name "*.dat" -o -name "*.csv" 

현재 디렉터리와 재귀 적으로 두 개의 확장자로 끝나는 모든 파일을 찾습니다.

+0

하자 말합 'test.dat'라는 단일 파일이있는 경우 현재 파일에 '.dat'파일 확장자가 있는지 어떻게 알 수 있습니까? 위의 스크립트는 .dat 확장자의 모든 파일을 나열합니다. – Arun

+0

'찾기. -name test.dat'는'test.dat'라는 파일 만 찾습니다. – jacobsimeon

3

원하는 사항은 무엇입니까?

find . -name "*.dat" 
find . -name "*.csv" 
+0

내가 'test.dat'라는 단일 파일을 가지고 있다면, 현재 파일에 '.dat'파일 확장자가 있는지 어떻게 알 수 있습니까? 위의 스크립트는 .dat 확장자의 모든 파일을 나열합니다. – Arun

+0

어쩌면 이것은 당신을 도울 수 있습니다 : http://unix.stackexchange.com/questions/1571/bash-get-file-extension – alexl

2

당신은 변수에 이름이있는 경우

filename = test.csv 

후 바로 "CSV"부분을 얻기 위해 이것을 사용 : bash에 대한

echo ${filename##*.} 

작품을 KSH

에 그것을 시도

편집 :

filename=test.csv 
fileext=${filename##*.} 
if [ fileext = "csv" ]; then 
     echo "file is csv, do something" 
    else 
     if [ fileext = "dat" ]; then 
      echo "file is dat, do something" 
     else 
      echo "mhh what now?" 
     fi 
fi 
+0

확장자가없는 파일 이름은 필요 없어요 ... 나는 무엇인지 알아야합니다. 내가 처리 할 시간의 연장. – Arun

+0

귀하의 의견에 응답, 위의 참조 ... –

2
find /path -type f \(-name "*.dat" -o -name "*.csv" \) | while read -r file 
do 
    echo "Do something with $file" 
done 
관련 문제