从grep count添加文件扩展名

时间:2017-05-10 09:47:05

标签: bash file grep

我有一大堆文件(大约10k),文件名以prefix开头。他们没有任何延期。我想给它们一个数字扩展,它对应于每个包含某个string的行数。我知道如何使用grep来找到这个数字:

grep -c string *

输出(提取)

prefix0123:1
prefix9876:5

我想要的是将计数添加为扩展名,即获取

prefix0123.1
prefix9876.5

我正在使用bash控制台。

2 个答案:

答案 0 :(得分:1)

最好的方法是在file:count中生成一个grep对,方法是添加一个带有-r标记的递归搜索,然后将其重新命名为

grep -cr bash * | while IFS=':' read -r file count; do
    mv -v "$file" "${file}.${count}"
done

您可以首先用mv替换echo "$file" "${file}.${count}"以确认是否所有文件都已重命名为期望,然后使用mv命令

答案 1 :(得分:0)

您可以为每个文件运行一次grep命令,并将其输出直接替换为新文件名:

for i in *
do
  test -f "$i" || continue
  mv -nv "$i" "$i.$(grep -c string "$i")"
done

我已经明确排除了非常规文件,因为grep不像目录那样作为参数(如果你愿意,你可以允许符号链接)。我还在移动命令中添加了-n,因此我们不会意外覆盖任何现有文件。