我有这个bash脚本:
#!/bin/bash
if [ $(egrep -c "(% url+ )([0-9a-z_:]+)" 'test.txt') -gt 2 ]; then
echo true
exit 1
else
echo false
exit 0
fi
我正在test.txt
上测试它,但是如何在目录及其子目录中的每个文件上运行它?如果我尝试这样的事情:
#!/bin/bash
if [ $(egrep -c "(% url+ )([0-9a-z_:]+)" '~/Documents/somefolder/targetfolder/') -gt 2 ]; then
echo true
exit 1
else
echo false
exit 0
fi
它显然不起作用并给我下一个输出:
egrep: ~/Documents/somefolder/targetfolder/: No such file or directory
./run.sh: line 2: [: -gt: unary operator expected
false
那么如何在目录中的每个文件上运行我的脚本,即使它位于子目录中?
答案 0 :(得分:1)
您应该可以使用find
:
find . -type f -exec script.sh {} \;
空格,尾部反斜杠和分号都很重要。此find命令查找或以下的所有文件。然后对每个文件执行script.sh
传递它作为参数运行的当前文件。例如,以下命令将通过在每个文件上运行wc
命令为您提供层次结构中每个文件的字数:
find . -type f -exec wc {} \;
答案 1 :(得分:0)
当前的问题是~
不会在引号内扩展。