【问题标题】:Running an SPTK command for all the files in a directory对目录中的所有文件运行 SPTK 命令
【发布时间】:2014-05-03 21:27:29
【问题描述】:

我有以下命令将原始文件转换为浮点数

x2x +sf < /raw-en/1.raw > /raw-f/1.f

我需要对目录“raw-en”中的所有文件运行它

【问题讨论】:

    标签: bash file shell command repeat


    【解决方案1】:

    这是for 循环的典型用例:

    for file in /raw-en/*; do
        x2x +sf < $file > /raw-f/$(basename $file .raw).f
    done
    

    编辑:修正了@ederollora 指出的输出目录。

    编辑[2]:您应该考虑在for-循环中使用*.raw 来适应您的用例(再次感谢@ederollora)。

    【讨论】:

    • 但是你应该把 *.raw 改成 *,因为他不只声明 .raw 文件,而是目录中的所有文件。
    • 其实我只是想到了这个。谢谢你。太晚了……;)
    • 难道你不能改变你的答案吗?
    • 太棒了,现在这不仅仅是一个正确的答案,完全适合这个问题。对于未来,如果您认为询问的人可能是错误的或没有询问代码中所有必要的更改,您可以考虑添加不同的案例。
    【解决方案2】:

    您可以遍历目录中的文件:

    #!/bin/bash
    for filename in /raw-en/*; do
        x2x +sf < "$filename" > /raw-f/"${filename%.*}.f"
    done
    

    这应该适合你的情况。

    PD:扩展更改取自:https://stackoverflow.com/a/4411117/2317111

    【讨论】:

    • 不完全是:您的所有输出都将进入1.f
    • 他没有告诉输出到哪里,他只是告诉他需要它来运行目录中的所有文件,顺便说一下,这不是你写的。你应该改变它,或者提问的人应该重写问题。
    • 我的脚本符合他的要求,但当然,他应该重写他的问题,以防答案不符合它。
    • 哎呀,好吧,你是对的,我没有注意到改变的输出目录。是的,我怀疑他的意思是这样,但严格来说,你的假设在技术上是完全有效的。
    猜你喜欢
    • 2012-05-18
    • 1970-01-01
    • 1970-01-01
    • 2014-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多