Linux使用regex查找命令并在文件中写入操作异常



所以我有一个文件夹,里面有.wav文件,看起来像这样:

afr_(4位(_(随机数字(.wav

我想创建一个包含所有以afr_0184_和afr_1919_开头的文件的列表,我使用这个linux命令行

查找/目录/-名称"arf_0124*.wav"-o-名称";afr_1919_*.wav">列车列表

由于某些原因,列表中只有afr_1919_文件,就好像它覆盖了在它们之前找到的afr_0184_一样。

我也试过这个

find/directory/-name'afr_(0184|1919(_*.wav'>列车列表

,但在这种情况下,列表为空。

我在这里做错了什么?

您可以使用

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]*匹配任意零位或多个数字(用+替换*以匹配一个或多个(。

添加.*/是因为正则表达式应该与整个路径字符串匹配。

相关内容

最新更新