2015-05-27 23 views
1

从来就写行命令这一点,但它doesn't工作添加相同的消息几个文件在Linux

cat fich?.txt < hi, adding message for several files 

从来就得到了以下文件

fich1.txt fich2 .TXT fich3.txt fich4.txt fich5.txt fich6.txt

+0

你创建文件或修改它们的开始,新的内容? – user2182349

+0

我在修改它们 – mangulom

+0

你很可能没有一个名为'hi,'的文件来重定向输入,也没有一个名为'adding','message','for','several'或'files'的文件为'猫'阅读。我怀疑你得到一个“bash:嗨,:没有这样的文件或目录”类型的消息给予该命令; '猫'永远不会开始。你真的想做什么? – twalberg

回答

2
for f in fich?.txt; do 
    cat message.txt >>$f 
done 

这将增加(追加)文件message.txt的内容到所有与shell匹配模式fich?.txt匹配的文件。如果您希望更严格并且只匹配您提到的特定文件,请使用fich[1-6].txt的模式。

要添加的东西给每个文件的开头,这样做:

for f in fich?.txt; do 
    tmpfile=$(mktemp XXXXX) 
    cat message.txt $f >$tmpfile 
    mv $tmpfile $f 
done 

没有捕捉错误的发生在这里,所以它不是防呆或超安全。

0

不同的方法 - 在插入文件

for f in fich*.txt; do 
    sed --in-place '1 ihi, adding message for several files' "$f"; 
done