使用给定的字符串从所有文件中创建文件

时间:2015-07-06 14:55:39

标签: bash shell syntax sh

  

创建一个文件,其中包含当前文件夹中具有给定字符串的所有文件的内容(例如参数1),数据将一个接一个地存在(每个文件附加到结尾)。该文件的名称将是给定的字符串。

我想到了以下内容,但它不起作用:

grep $1 * >> fnames #places all the names of the right files in a file
for x in fnames
do
  cat x >> $1 #concat the files from the list
done
rm fnames

在同一个音符上,是否有一个网站解决了这样或类似的练习?

2 个答案:

答案 0 :(得分:2)

您可以使用process substitution执行此类操作:

find

这假设您的目录只有文件而没有子目录。

如果还有子目录,则需要将grepfind . -maxdepth 1 -type f -exec grep -q "search-pattern" {} \; -print0 | xargs -0 cat > /path/to/newfile 一起使用:

.state('home', {      
  url: '/home?state',
  controller: 'RouteCtrl'
})

答案 1 :(得分:1)

怎么样(假设你不担心名字中带有空格或换行符或shell globs / etc。的文件,因为这些文件在这里无法正常工作):

for O in $(grep -l $1 *)
 do
   cat "$O" >> $1
 done