从部分名称在文本文件中的文件夹中选择wav文件

时间:2017-12-05 05:55:49

标签: linux bash matlab

我在文件夹ABC中有500个波形文件,其名称类似于

{{1}}

全部使用扩展名.wav。

我还有一个文本文件,其中包含3位数字,如

  1. 001
  2. 003
  3. 098
  4. 034 ....(总共200个)。
  5. 我想从名称以这3位数字结尾的文件夹ABC中选择wave文件。

    期待MATLAB或bash脚本解决方案。

    我读到了这个: Copy or move files to another directory based on partial names in a text file。但我不知道如何使用它。

3 个答案:

答案 0 :(得分:1)

for Matlab

1)使用函数dirrdir获取文件夹中的所有文件名。

2)使用for循环遍历每个文件名,并将每个文件名的最后3位数添加到数组(数组A)。您需要str2num()这里

3)将所有3位数字解析为数组(数组B)

4)使用函数ismember(B, A)查找A中包含哪些B元素

5)加载相应的文件名

答案 1 :(得分:0)

find . -name "*.wav" | grep -f <(awk '{print $0 ".wav"}' file)

grep -f将使用存储在文件中的模式,每行一个,并在查找结果中查找它们。但是你希望这三个数字在最后,所以在上面的命令中,最后一个awk语句将提供一个修改过的文件&#34; .wav&#34;附在每一行。因此对于 001 行,&#34; 0 001 .wav&#34;匹配,但任何文件 001 0.wav不会。

请参阅:process substitution syntaxgrep --help

答案 2 :(得分:0)

preg_replace_callback('~^(\h*Data_\d{2,}:\h*")(.*)"~m', function($m) {
    return $m[1] . str_replace('"', '', $m[2]) . '"';
}, $content);

我不认为这是一个简单的答案,这就是我在这里问的原因。无论如何,我的问题解决了,这就是为什么我发布这个作为答案。

谢谢大家。