编写linux脚本根据文档中的内容(文件名)查找文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编写linux脚本根据文档中的内容(文件名)查找文件相关的知识,希望对你有一定的参考价值。

linux去vsftpd服务器下载指定的文件,这些需要的文件的文件名都在一个文档中,怎样把文件名提取出来,并根据文件名去服务器下载
文档是xml个格式的,每次读一个文件名(占一行),ftp下载,下载完成后删除xml文件中的这个文件名,xml文件中的文件名可能随时会增加,要求这个脚本在后台一直运行,有文件名就下载

1,你存文件名的文档内容格式是什么样的,根据格式考虑是否使用sed,awk来进行编辑后提取。
2.假设你的文件名提取出来后,可以通过两种方式代入到脚本中,第一种就是把文件名存成一个
数组,依次读取数组元素,第二种把整理出来的文件名存成一个文本文件,假设整理后的结果
为每一个文件名为一行,然后在脚本中调用逐行读取这个文本文件内容。追问

是xml个格式的,每次读一个文件名(占一行),ftp下载,下载完成后删除xml文件中的这个文件名,xml文件中的文件名可能随时会增加,要求这个脚本在后台一直运行,有文件名就下载

追答

那就是从xml里提取文件名,存成数组或者文件。
而且xml文件有多大,提取的文件名有多少。是否会影响到服务器的性能。而且你的需求
还需要在下载完成后,删除xml内容。这个估计你的好好思考一下了。
你这种脚本,就得在实际环境中写,外人只能给你提建议。。直接给你一个完整的脚本。
不太可能。

追问

1 #!/bin/bash
2 filelist="filename"
3 declare -i number
4 while [ 1 ]
5 do
6 downfile=`head -1 $filelist`??
7 number=`cat $filelist | wc -l` ??

8 if [ number -gt 0 ];then
9 ftp -n<<!
10 open 192.168.1.106
11 user user 123
12 binary
13 prompt
14 get $downfile
15 close
16 bye
17 !
18 sed -i '1d' $filelist
19 fi
20 done
用text试验一下,帮我看看 ,有问号的地方出问题了

追答

你那两个只是提取一下变量,从语法上我没看出来有什么问题。具体报什么错贴一下。
我觉得你最好downfile变量赋值这句可以放到if里,逻辑上也就是当number大于0时执行then,
因为你只有在大于0时才可以截取到downfile这个变量。不大于0时或截取不到时就为空。
而且你if判断写错了。 if [ $number -gt 0 ];then 你最好sh -x scriptname 自己检测一下。

追问

找到一个错误,8行没有加$
另外一个问题是服务器有一个test文件,下载下来会变为test?,所有的文件下载后,名字后都有?
这是怎么回事啊!是第六行有错误啊,

追答

那就不晓得了。估计跟字符集有关。猜的。因为我没遇见过。

追问

我怀疑提取文件名有错

我试了一下,如果我只写一行,也就是一个文件名,就没有?,但多个就有错误,即使下载后删除到只剩一行,最后一个文件名也有?

参考技术A cat filelist|while read i
do
ftp -n ftpserverip <<end
username
passwd
get $i
end
done

差不多就是这么个意思,,有些地方可能写的有些出入,我这也没有没ftp 的服务器了,,,只是凭着印象写的

以上是关于编写linux脚本根据文档中的内容(文件名)查找文件的主要内容,如果未能解决你的问题,请参考以下文章

Linux 脚本编写 如何编写一个脚本,修改已有文件中的内容

怎样用文本文档写命令脚本文件? 有例子最好

linux下按文件名和文件内容查找文件

使用聚合查找最新批次中的文件数

文档的内容类型(ContentType)

Linux里如何查找文件内容