我有很多客户在其public_html目录中运行一个软件。该软件包含一个名为version.txt
的文件,其中包含其软件的版本号(该号码,不包含其他内容)。
我想编写一个bash
脚本,它将直接在每个用户的version.txt
中查找名为/home/xxx/public_html/
的文件,并输出文件的路径和文件的内容,即:
/home/matt/public_html/version.txt: 3.4.07
/home/john/public_html/version.txt: 3.4.01
/home/sam/public_html/version.txt: 3.4.03
到目前为止,我所尝试的是:
#!/bin/bash
for file in 'locate "public_html/version.txt"'
do
echo "$file"
cat $file
done
但这根本不起作用。
答案 0 :(得分:1)
find /home -type f -path '*public_html/version.txt' -exec echo {} " " `cat {}` \;
可能适合你,但你可以不用echo
和cat
(“欺骗”grep):
find /home -type f -path '*public_html/version.txt' -exec grep -H "." {} \;
答案 1 :(得分:1)
或者使用find:
find /home -name "*/public_html/version.txt" -exec grep -H "" {} \;
答案 2 :(得分:0)
for i in /home/*/public_html/version.txt; do
echo $i
cat $i
done
将找到所有相关文件(使用shell通配符),echo
文件名输出和cat
文件。
如果你想要更简洁的输出,你应该调查grep并用适当的正则表达式替换echo / cat,例如。
grep "[0-9]\.[0-9]" $i