2012-02-06 75 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

相关问题