2013-02-16 64 views
0

我一直与从找到的目录正则表达式“LS -lF”:如何使用正则表达式和sed检测结束'/'?

sed -n '/\/$/p' 

现在,我想这与不是目录(即文件,而不是符号链接)工作。我应该怎么做?

+0

目前还不清楚你问什么。你的意思是'sed -n'/ [^ \ /] $/p''? – asm 2013-02-16 18:46:18

+0

差不多!谢谢。我想排除符号链接,其中包括' - >'在命令中。我试图增加你的正则表达式,但我没有成功。 – Jonhas 2013-02-16 18:50:31

+0

如果你不想使用'sed'来检测某些东西,那么不要运行'sed',这么简单。 – 2013-02-16 18:51:03

回答

0
ls -lF | sed -n '/\/$/!p' 
# --------------------^------ 

就像在Unix的许多地方一样!否定测试。或者,也许您熟悉grep工具系列中的-v否定。

IHTH

1

Don't try to parse ls。通过find命令使用适当的谓词,或者查看test命令可用的初选。

for f in *; do 
    if ! [ -d "$f" ]; then 
     echo "$f" 
    fi 
done 
+1

使用'find'确实比解析ls好得多。如果需要找到直接的孩子,请使用'-maxdepth 1'。此外,他似乎只想要常规文件(不符合链接,并且应该不是fifo或设备文件..)。所以我的建议是:'find dir -maxdepth 1 -type f' – darque 2013-02-16 21:45:03