2012-02-06 3 views
3

저는 bash 쉘 스크립트에서 작업 중이며,이 쉘 스크립트는 폴더를 거쳐 파일 이름을 기반으로 새로운 디렉토리를 만듭니다. 이제 각 파일을 살펴보고 경로의 원치 않는 슬래시를 제거하고 새 디렉터리를 만들기 전에 파일 확장명을 무시하고 싶습니다.grep -E의 Regex가 예상대로 작동하지 않습니다.

#!/bin/sh 

cpath=`pwd` 
for file in $cpath/*;do 
echo $file | grep -E '(?!.*/).+(?=\.)' 
done 

을하지만 GREP은 모든 것을 필터링하고 난 더 출력을 얻을 : 이를 테스트하려면,이처럼 내 파일을 울리는거야. RegExr을 사용하여 정규 표현식을 계산했습니다. http://gskinner.com/RegExr/?2vu6b
마지막 점과 일치하는 마지막 슬래시 및 양수 앞머리와 일치하는 부정적 미리보기입니다.

답변

2

부정적 미리보기가 확장 된 RE의 일부인지 확실하지 않습니다. 하지만 다음과 같이 할 수 있습니다 -

#!/bin/bash 

for file in $PWD/*; do 
basename "${file%.*}" 
done 
+1

'echo'도 필요하지 않습니다! –

+0

감사합니다. @ CarlNorum, 네 말이 맞아! :) –

+0

고마워요! –

관련 문제