【问题标题】:Linux Write Something on multiple filesLinux 在多个文件上写东西
【发布时间】:2009-01-02 11:40:01
【问题描述】:

我有一个包含一些文本的文件“atest.txt”..

我想在文件“asdasd.txt asgfaya.txt asdjfusfdgh.txt asyeiuyhavujh.txt”中打印此文本

此文件在我的服务器上不存在..

我正在运行 Debian.. 我能做什么?

【问题讨论】:

    标签: linux debian


    【解决方案1】:

    使用 tee(1) 命令,该命令将其标准输入复制到标准输出以及命令行上指定的任何文件。例如

    printf "你好\n这是一个测试\n谢谢你\n"
      | tee test1.txt test2.txt $OTHER_FILES >/dev/null

    使用您的示例:

    cat atest.txt
      | tee asdasd.txt asgfaya.txt asdjfusfdgh.txt asyeiuyhavujh.txt >/dev/null

    【讨论】:

    • 希望您不介意我的编辑,让示例给出的答案更清晰
    • UUOC: tee test1.txt test2.txt /dev/null
    【解决方案2】:

    从您的 bash 提示符中:

    for f in test1.txt test2.txt test3.txt; do echo -e "hello\nworld" >> $f; done
    

    如果文本位于 atest.txt 中,则执行以下操作:

    for f in test1.txt test2.txt test3.txt; do cat atest.txt >> $f; done
    

    【讨论】:

      【解决方案3】:

      是不是很简单:

      cp atest.txt asdasd.txt 
      cp atest.txt asgfaya.txt
      cp atest.txt asdjfusfdgh.txt
      cp atest.txt asyeiuyhavujh.txt
      

      ?

      【讨论】:

        【解决方案4】:

        在bash中你可以写

        #!/bin/bash
        $TEXT="hello\nthis is a test\nthank you"
        for i in `seq 1 $1`; do echo -e $TEXT >text$i.txt; done
        

        编辑(响应问题的变化)

        如果您无法以编程方式确定目标文件的名称,则可以使用此脚本:

        #!/bin/bash
        ORIGIN=$1;
        shift
        for i in `seq $#`; do cp "$ORIGIN" "$1"; shift; done
        

        你可以这样使用它:
        script_name origin_file dest_file1 second_dest_file '第三个文件' ...

        如果你想知道为什么 cp 命令中有双引号,这是为了处理包含空格的文件名

        【讨论】:

          【解决方案5】:

          如果有人想在 dir 中的所有文件中写入相同的内容:

          printf 'your_text' | tee *
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2015-12-04
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-05-06
            • 1970-01-01
            相关资源
            最近更新 更多