2013-02-16 62 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