Lew*_*ton 2 bash shell grep curl file
我正在编写一个 bash 脚本,需要执行的任务之一是通过 curl 连接到 FTP 服务器并找到最后修改的 .zip 文件的名称。
我们正在查看的文件的名称格式是MM_DD_YYYY_ALL.zip
.
到目前为止,我有,有遗漏<< >>
:
export FILEPATTERN=_ALL.zip
for FILE in `curl -u << SERVER INFO >> 2> /dev/null | grep ${FILEPATTERN} | awk -F\ '{print $9}'`
do
...
# Do stuff with each file to determine most recent version.
...
done
Run Code Online (Sandbox Code Playgroud)
文件名未格式化的事实YYYY_MM_DD
似乎是无法通过一些快速修剪和计算来完成的主要原因。
有没有一种有效的方法可以从此列表中提取最新修改的 zip 文件的名称?或者在生成列表时是否可以进行一些处理?
干杯。
小智 6
您可以使用多键sort
命令一次性对文件名进行排序,并使用 获取最后一行tail
以获取最新文件。
您需要指定-t-
使用破折号作为排序的字段分隔符,-n
以获得数字排序,并按优先级顺序列出每个字段。字段说明符的格式为:
-k, --key=POS1[,POS2] start a key at POS1 (origin 1), end it at POS2
(default end of line)
Run Code Online (Sandbox Code Playgroud)
因此,对于年份,字段 3,您需要将其 4 个字符的宽度列为-k3,4
.
如果您按该顺序按年、月和日字段排序,您最终会得到一个列表,其中包含按日期顺序排列的所有文件。
因此for
,您可以使用:
FILE=`curl -u << SERVER INFO >> 2> /dev/null | grep ${FILEPATTERN} | awk -F\ '{print $9}'
| sort -n -t- -k3,4 -k1,2 -k2,2 |tail -1`
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2903 次 |
最近记录: |