2016-03-15 24 views
-2

我有幾個文件,如123.iso,234.isoaa,456.isoab,sajdhsjf.isoaf
我想提取除了那些完全以.iso結束的文件之外的所有文件。
例如,我應該有234.isoaa,456.isoab,sajdhsjf.isoaf使用正則表達式匹配字符串

+2

這個問題沒有明確地定義,並且會從[最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)中獲益很多,澄清代碼的哪部分不起作用如預期。 '殼'也不太精確。哪個外殼? –

回答

1

假設你的意思是「所有文件後綴以.iso除...開頭」,這個工程:

ls -1 | egrep "\.iso.+" 
+1

這不會列出諸如'foo.bar'的文件。也許這是OP真正想要的,但是他說他希望提取**所有**文件,除了那些以'.iso'結尾的文件。如果他真的意味着這一點,grepping解決方案將是'ls -1 | grep -v'\ .iso $'' – user1934428

0

試試這個:

\ B [\ W ] (?!ISO \ b)。[\ W] \ b

0

蒂姆Pietzker指出的,你沒有說對的shell,你需要一個解決方案,但在zsh中,你可以做

setopt local_options extended_glob 
echo *^*.iso(N) 

如果你很高興得到文件,這在年底(與任何X)有.isoX,這應該在bash,zsh中和ksh工作:

echo *.iso?* 

注意這第二解決方案 - 與第一個不同 - 將不是列表文件,如abc.txt

當然,你可以做一個ls -1而不是echo。這取決於你想要怎樣處理結果。