我写了一个小的shell脚本,用来识别我网站中的PDF文件关联页面。
它是一个的pdf源列表网址,作为一个输入和发现递归的网站内容。
问题是,当我运行脚本查找结果时,没有附加到输出文件中,但是当我接受find命令并在终端/putty中手动运行时,可以看到结果。
剧本:
#!/bin/bash
filename="PDF_Search_File.txt"
while read -r line
do
name="$line"
echo "*******pdf******** - $name\n" >>output_pdf_new.txt
find . -type f -exec grep -l "$name" '{}' \; >>output_pdf_new.txt
echo "*******pdf******** - $name\n" >>output_pdf_new.txt
done < "$filename"源列表url输入文件(PDF_Search_File.txt)
/static/pdf/pdf1.pdf
/static/pdf/pdf2.pdf
/static/pdf/pdf3.pdf
--------------------输出结果文件(output_pdf_new.txt)
./Search_pdf.sh
*******pdf******** - /static/pdf/pdf1.pdf\n
*******pdf******** - /static/pdf/pdf1.pdf\n
./Search_pdf.sh
*******pdf******** - /static/pdf/pdf2.pdf\n
*******pdf******** - /static/pdf/pdf2.pdf\n
./Search_pdf.sh
*******pdf******** - /static/pdf/pdf3.pdf\n
*******pdf******** - /static/pdf/pdf3.pdf\n
------------------------------------------当手动运行查找时,终端/putty可以看到下面的结果。
find . -type f -exec grep -l "/static/pdf/pdf1.pdf" '{}' \;
./en/toyes/zzz/index.xhtml
./en/toyes/kkk/index.xhtml
--------------但是由于脚本有问题,只能输出与上面的输出结果相同的回显结果。
更新当我使用bash -x执行脚本时,它给出了以下结果
[user@server1 generated_content]# bash -x Search_pdf.sh
+ filename=PDF_Search_File.txt
+ read -r line
+ name=$'/static/pdf/pdf1.pdf\r'
\n'cho '*******pdf******** - /static/pdf/pdf1.pdf
+ find . -type f -exec grep -l $'/static/pdf/pdf1.pdf\r' '{}' ';'
\n'cho '*******pdf******** - /static/pdf/pdf1.pdf
+ read -r line
+ name=$'/static/pdf/pdf2.pdf\r'
\n'cho '*******pdf******** - /static/pdf/pdf2.pdf
+ find . -type f -exec grep -l $'/static/pdf/pdf2.pdf\r' '{}' ';'这里有什么问题吗?
+ find . -type f -exec grep -l $'/static/pdf/pdf2.pdf\r' '{}' ';'find命令应该如下所示,但它在执行时与上面一样
find . -type f -exec grep -l "/static/pdf/pdf1.pdf" '{}' \;发布于 2018-06-14 05:49:54
for循环中文件的grep -rl:
cd /www/webroot/
grep -rl "${name}" * | while read file_path; do
# I need to do something with each file
echo $file_path
done或者我只需要运行输出文件
cd /www/webroot/
grep -rl "${name}" * >> output_pdf_new.txthttps://stackoverflow.com/questions/50849694
复制相似问题