如何从stdin grep模式

时间:2014-10-11 17:40:14

标签: bash grep stdin

我前段时间制作了一个Bash脚本来查找重复文件/home/usr/xxx/bin/finddup.sh

#!/bin/bash
DIR=${1:-`pwd`}
FILENAME=`basename $0`
DATETIME=`date +%Y%m%d%H%M%S`
TMPFILE=`mktemp /tmp/${FILENAME}.${DATETIME}` || exit 1
find -P $DIR -type f -exec cksum {} \; | sort | tee $TMPFILE | cut -f 1-2 -d ' ' | uniq -d | grep -if - $TMPFILE | sort -nr -t' ' -k2,2 | cut -f 3- -d ' ' | while read line; do ls -lhta "$line"; done

但是今天当我再次尝试使用它时,它并没有起作用。问题似乎来自grep -if - $TMPFILE步骤,它无法从stdin提供的模式中找到来自$TMPFILE的重复文件行。我无法在这里找出-的正确用法。任何人都可以启发我吗?

1 个答案:

答案 0 :(得分:2)

你根本不需要-f -。如果您没有为grep指定文件,则默认为阅读stdin

编辑:这个答案是不正确的。 -f指示grepstdin而不是要搜索的文字中读取模式。