我想在我的目录
的所有文件夹中搜索k1.shADU-07 WebInterface-JobTable_files
ADU-07 WebInterface-JobTable.html
ADU-07 WebInterface-SelfTestResults_files
ADU-07 WebInterface-SelfTestResults.html
meas_2016-07-13_20-22-00
meas_2016-07-13_20-25-13
meas_2016-07-13_20-29-43
meas_2016-07-13_20-33-43
meas_2016-07-13_20-37-43
meas_2016-07-13_20-54-43
meas_2016-07-13_21-46-43
当我尝试
时grep -r -e "k1.sh" /home/milenko/SerradoMel/MT06
我什么都没得到。为什么?如何检查我的grep是否支持-r选项?
答案 0 :(得分:2)
grep
检查文件的内容,而不是文件的名称。您可以这样测试:
mkdir -p foo.d
echo "non-matching" >foo.d/k1.sh
echo "k1.sh" >foo.d/matching
grep -r -e k1.sh foo.d
rm -rf -- foo.d
以上的输出是:
foo.d/matching:k1.sh
...其中foo.d/matching
是匹配的文件名,k1.sh
是内容。
您会看到它没有标识名为k1.sh
的文件(但内容为non-matching
),而是标识名为matching
的文件;这是因为grep
的记录目的是查看文件的内容,而不是文件的名称。
相反,要查找名为k1.sh
的文件,请使用:
find /home/milenko/SerradoMel/MT06 -type f -name k1.sh
答案 1 :(得分:1)
问题:您要查找名为k1.sh的所有文件,还是要在所有文件中找到字符串k1.sh?
回答:@PauloScardine名为k1.sh的所有文件都将尝试使用find。
然后grep是错误的工作。 grep命令查找字符串" k1.sh"在该路径中的所有文件中 - 如果要查找名为" k1.sh"的所有文件。您正在寻找find
命令:
find /home/milenko/SerradoMel/MT06 -name k1.sh