2012-01-08 112 views
3

我已经在仅具有这些创建文件的目录中的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

+0

写一个字符串==只有这个字符串?附加? – fge 2012-01-08 10:57:51

+0

这些都是空文件 – 2012-01-08 11:00:29

+0

这看起来更像是一种编程语言作业,而不是我的命令行作业......您可以创建并行线程来执行此类作业。但真正的问题是:你为什么这样做?什么同步?从这个角度来看,应该使用其他方法... – Beachwalker 2012-01-08 11:02:07

回答

3

在命令提示(击)

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

如果我想将所有这些文件中的其他文件的内容? 。例如。我有一个文件中的标准头,我想写在所有这些文件 – 2012-01-08 12:03:41

1

一旦数据是在阵列中很容易遍历,见例子。

只需将其保存在一个空文件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 
+0

2行:语法错误:“(”意想不到 – 2012-01-08 11:27:06

+0

它为我工作,我刚刚编辑它,并删除半圆分裂,看看它现在是否适用于你,只是复制粘贴到gedit或纳米 – imp 2012-01-08 11:35:38

+0

@imp ---同样的错误.. – 2012-01-08 11:57:26

1

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

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

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