繁体   English   中英

shell / linux脚本仅选择某些文件到FTP

[英]shell/linux scripting only selecting certain files to FTP

目录中的csv文件列表需要进行验证。 每列都应通过自己的验证; 因此$ 1是第一个coulmn,不应为null,依此类推...

在csv文件通过每列的每个验证之后,它被认为是一个好的文件。 现在我该如何提取这些好文件,以便可以将它们通过ftp下载到另一个位置?

  1. 每次验证后,我应该只对每个文件进行ftp吗? (太多时间?)

  2. 创建好文件的名称列表,并将其传递到数组中,这样我以后就可以遍历该数组以将其传递给ftp?

到目前为止,这是我的尝试。

#!/bin/sh

for file in /source/*.csv

do
   awk -F',' '{
$date_regex = '~(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\d\d~';

 if (length($1) == "")  
break
 if (length($2) == "") && (length($2) > 30)
break
 if (length($3) == "") && ($3 !~ /$date_regex/)
break
 if (length($4) == "") && (($4 != "S") || ($4 != "E")   
break
 if (length($5) == "") && ((length($5) < 9 || (length($5) > 11)))
break

}' file

    #whatever you need with "$file"
done

如果检查失败,请从awk退出1。 当awk成功时,使用if语句传输文件。

#!/bin/sh

    for file in /source/*.csv; do
       if awk -F',' '{
     # your multiple checks here.
     if (length($1) == "") && (length($2) == "") && (length($2) > 30) && ...)
           exit 1
    }' "$file"; then [scp or ftp command as you like]; fi       
    done

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM