【发布时间】:2015-01-08 01:33:25
【问题描述】:
这是我的 shell 脚本。 给定一个目录和一个单词,搜索目录并打印该单词出现次数最多的文件的绝对路径,并打印出现次数。 我写了以下脚本
#!/bin/bash
if [[ -n $(find / -type d -name $1 2> /dev/null) ]]
then
echo "Directory exists"
x=` echo " $(find / -type d -name $1 2> /dev/null)"`
echo "$x"
cd $x
y=$(find . -type f | xargs grep -c $2 | grep -v ":0"| grep -o '[^/]*$' | sort -t: -k2,1 -n -r )
echo "$y"
else
echo "Directory does does not exists"
fi
result: scriptname directoryname word
output: /somedirectory/vtb/wordsearch : 4
/foo/bar: 3
有没有替代 xargs grep -c $2 的选项?因为 grep -c 打印包含该单词的计数=行数,但我需要打印给定目录中文件中单词的确切出现
【问题讨论】:
-
运行 find 命令两次是错误的。
x=`echo "$(find ...)"`可以是x=$(find ...)。对于带有空格或其他特殊字符的文件,像这样抓取 find 的输出是不安全的。 -
如果我删除它不起作用
-
怎么样?包装
echo和额外的子外壳没有做任何事情。