2012-06-08 61 views
1

的.cpp我使用bash版本4.2.28在Fedora 16我有extglob選項集。我試圖使用列表中ls *(h|cpp)匹配*.h*.cpp所有文件,但該命令將返回如下:列表是* .h和*使用bash

[[email protected] cadcore]$ ls *(h|cpp) 
ls: cannot access *(h|cpp): No such file or directory 

我覈實,確實存在我的當前目錄下的幾個.h.cpp文件。我是不是做錯了什麼或可能這是bashls一個錯誤?

更新:謝謝您的解答。使用*.h *.cpp做我需要的。不過,我還是想知道爲什麼extglob沒有工作,喜歡我的預期。

+0

你的意思是, 「使用'LS *(H | CPP)'。」? (也許你沒有,只有構造*看起來很奇怪,沒有點。) – thb

+0

不應該是'ls(* h | * cpp)'? –

+0

你只是在濫用擴展的glob符號。請參閱下面的答案。 – chepner

回答

5

*(pattern-list)匹配0次或多次出現以下模式列表的擴展水珠。它不匹配任意字符串,後跟選項列表中的某些內容。你想:

$ ls *[email protected](h|cpp) 

此相匹配的東西,隨後一段時間,之後無論是 「H」 或 「CPP」

+0

這是正確的。我想這LS * @(H | c)與無h和幾個C文件的目錄,並得到該test1.c test.c的 – octopusgrabbus

2

我不認爲你需要複雜的通配在這種情況下:簡單地嘗試echo *.h *.cpp

3

你應該能夠做到這ls *h *cpp