2011-08-30 97 views
1

我想查找名稱中包含正好14位數字(我試圖匹配文件名中的時間戳)的所有文件。我不確定如何獲得GNU find regexp語法的重複權限。重複GNU查找正則表達式

我試過find -regex ".*[0-9]{14}find -regex ".*[0-9]\{14\},這些都沒有出現任何結果。你能幫我一下語法嗎?

+0

你在匹配他們反對? – NullUserException

+2

Susam Pal的最佳答案爲我工作:http://stackoverflow.com/questions/6844785/how-to-use-regex-with-find-command – 2012-06-09 07:18:39

回答

2

記得,GNU find's -regex整個路徑相匹配。無論如何,你可以使用的findgrep組合做任務,例如,要準確地找到14位,沒有其他字符

find . -type f -printf "%f\n" | grep -E "\b[0-9]{14}\b" 

修改以滿足您的需求

1

嘗試更改-regextype參數以查找。

更改-regex和-iregex 在命令行中稍後發生的測試所瞭解的正則表達式語法。目前實現的 類型是emacs(這是默認值),posix-awk,posix-basic, posix-egrep和posix-extended。

0

奇怪,我只是試了一下,我無法得到這項工作。這裏有一個解決辦法呢(匹配2個連續號碼):

$ls 
a123.txt a1b2c3.txt a45.txt b123.txt 
$find -regex '.*[^0-9][0-9][0-9][^0-9].*' 
./a45.txt