[英]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.