簡體   English   中英

Linux find-command with regex並寫入一個奇怪的文件

[英]Linux find-command with regex and write in a file working strange

所以我有一個包含 .wav 文件的文件夾,如下所示:

afr_(4位數字)_(隨機數字).wav

我想創建一個包含所有以 afr_0184_ 和 afr_1919_ 開頭的文件的列表,我使用這個 linux 命令行

find /directory/ -name "arf_0184_*.wav" -o -name "afr_1919_*.wav" > train.list

出於某種原因,該列表中只有 afr_1919_ 文件,就好像它覆蓋了在它們之前找到的 afr_0184_ 一樣。

我也試過這個

find /directory/ -name 'afr_(0184|1919)_*.wav' > train.list

但在這種情況下列表是空的。

我在這里做錯了什么?

您可以使用

find /directory/ -regextype posix-egrep -regex '.*/afr_(0184|1919)_[0-9]*\.wav' > train.list

要匹配任何 4 位變體而不是兩個“硬編碼”值,請使用

'.*/afr_[0-9]{4}_[0-9]*\.wav'

使用-name ,您只能使用 glob 通配符模式進行搜索,您需要-regex

使用-regextype posix-egrep ,您可以使用交替和未轉義的捕獲括號。 [0-9]*匹配任何零個或多個數字(將*替換為+以匹配一個或多個)。

添加.*/是因為正則表達式應該匹配整個路徑字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM