【问题标题】:"Cat" into multiple files using brace expansion使用大括号扩展将“Cat”放入多个文件
【发布时间】:2020-04-23 22:33:19
【问题描述】:

我对 bash 很陌生,并尝试使用大括号扩展通过单个命令将一些文本输入到多个文件中。

我尝试:cat > file_{1..100} 将一些我将在终端中输入的文本写入 100 个文件。我收到以下错误:

bash: file_{1..100}: ambiguous redirect

我也尝试过:cat > "file_{1..100}",但这会创建一个名为:file_{1..100} 的单一文件。

我试过:cat > `file_{1..100}` 但这给出了错误: file_1: command not found

如何使用大括号扩展来实现这一点?也许还有其他使用其他实用程序和/或管道的方法。但我想知道这是否可能仅使用简单的大括号扩展。

【问题讨论】:

    标签: linux bash ubuntu


    【解决方案1】:

    您不能单独使用 cat 来执行此操作。它仅将其输出写入其标准输出,并且该单个文件描述符只能与单个文件相关联。

    不过,您可以使用 tee file_{1..100} 来完成。

    您可能希望考虑使用 tee file_{01..100} 代替,以便文件名被零填充以具有相同的宽度:file_001, file_002, ... 这样做的好处是字典顺序将与数字顺序一致,因此 ls* 等,将按数字顺序处理它们。如果没有这个,你就会遇到file_2 在字典顺序中出现在file_10 之后的情况。

    【讨论】:

      【解决方案2】:

      target 可以只是一个管道,而不是多个文件。 如果要将输出重定向到多个文件,请使用 tee

      cat | tee file_{1..100}
      

      不要忘记检查 man tee,例如,如果要附加到文件,则应添加 -a 选项(tee -a file_{1..100})

      【讨论】:

      • 在您的示例中使用cat 毫无意义,因为tee 无论如何都是从标准输入读取的。
      【解决方案3】:

      这会将stringtext 输入file{1..4}

      echo "hello you just knew me by kruz" > file{1..4}
      

      用来删除它们

      rm file*
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多