【问题标题】:writing a string into large number of files将字符串写入大量文件
【发布时间】:2012-01-08 10:55:40
【问题描述】:

我在 linux 终端上使用 touch 命令在一个只有这些创建文件的目录中创建了 10 个文件。

 $ touch a1.c a2.c a3.c a4.c a5.c a6.c a7.c a8.c a9.c a10.c

我想一次将字符串“stackOverflow”(比如)写入所有这些文件。 怎么做?有什么命令或者其他方法吗?

平台-ubuntu 10.04

【问题讨论】:

  • 写一个字符串==只有这个字符串?追加?
  • 对我来说,这看起来更像是一个编程语言工作,而不是一个命令行工作......你可以创建并行线程来完成这种工作。但真正的问题是:你为什么要这样做?同步的东西?从这个角度应该使用其他方式...
  • 您可以直接使用以下内容创建这 10 个文件:for i in $(seq 10); do echo stackOverflow >a$i.c; done
  • @fge--是的,这行得通,谢谢。

标签: linux shell unix terminal


【解决方案1】:

从命令提示符 (Bash)

for f in *.c; do echo "stackOverflow" >> $f; done

【讨论】:

  • 如果我想把其他文件的一些内容放到所有这些文件中怎么办? 。例如。我在一个文件中有标准标题,我想把它写在所有这些文件中
【解决方案2】:

一旦您的数据在数组中,就很容易循环,请参阅示例。

只需将其保存在一个空文件 writeStringToFiles.sh 中并右键单击它,然后在权限选项卡下单击允许将文件作为程序执行。您可以双击它或通过“cd”从终端运行它到它所在的目录,然后只需键入“./writeStringToFiles.sh”。你可以像这样将任何你想要的命令放在一个 bash 脚本中。

#!/bin/sh
files=(a1.c a2.c a3.c a4.c a5.c a6.c a7.c a8.c a9.c a10.c)
thingToWrite='stackOverflow'

for i in "${files[@]}"
do :
    touch $i
    echo -e $thingToWrite >> $i
done

exit

【讨论】:

  • 它对我有用,我只是编辑它并删除了分号看看它现在是否适用于你,只需将粘贴复制到 gedit 或 nano
  • 我不确定发生了什么,试试这个,打开 gedit paste "#!/bin/sh echo hello" no quotes 并将其保存为 test.sh 现在右键单击它然后在权限下选项卡单击允许将文件作为程序执行,然后从终端运行它,这确实有效。其他明智的见自己youtube.com/watch?v=6_br4MEDygw
【解决方案3】:

如果你的文件不为空(至少 1 个字节):

$ sed -i '1i\
stackOverflow' a{1..10}.c

将在每个文件的开头插入stackOverflow

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-29
    • 1970-01-01
    • 2011-10-24
    • 2016-02-03
    • 2019-09-04
    • 1970-01-01
    相关资源
    最近更新 更多