2012-02-06 57 views
3

我正在研究一個bash shell腳本,它通過一個文件夾並最終根據文件名創建新的目錄。 現在,我想瀏覽每個文件,並刪除不必要的斜槓,並在創建新目錄之前忽略文件擴展名。 爲了測試這一點,我在我的呼應文件中像這樣:在grep中的正則表達式-E不按預期工作

#!/bin/sh 

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

但grep的過濾掉一切,我沒有得到任何輸出。我用RegExr制定了正則表達式http://gskinner.com/RegExr/?2vu6b
負前視匹配最後一個斜槓和最後一個點匹配的正向lookahead。

回答

2

我不確定如果負向預測是Extended RE的一部分。但你可以這樣做 -

#!/bin/bash 

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

你甚至不需要'echo'! – 2012-02-06 19:14:20

+0

謝謝@CarlNorum,你是對的! :) – 2012-02-06 19:15:47

+0

謝謝,就是這樣! – 2012-02-06 19:19:39

相關問題