如何对下载文件的某些部分执行操作
How to perform action on parts of a downloaded file
很抱歉问题的标题,但我是。它确定如何最好地总结这一点。基本上我在服务器上托管了非常大的文本文件。我没有能力下载整个文件。我有一个 shell 脚本,我想在文本文件的各个行上 运行。有没有办法(ftp)下载文件块并在该块上执行 shell 脚本,然后下载下一个块(最好覆盖前面的块)以执行 shell脚本等
您应该能够在 FTP
模式下使用 curl
执行此操作,方法是将输出更改为 stdout
而不是本地文件名,然后使用 dd
或 head
或 tail
获取数据。
以下通过 FTP 连接到我的本地主机并获取文件 <HOME>/tmp/ppm.c
然后使用 dd
将块大小设置为 1k
并跳过第一个块,将输出写入文件 2nd1kB.txt
.
curl --output - --user user:password 'ftp://127.0.0.1/tmp/ppm.c' | dd bs=1024 skip=1 count=1 > 2nd1kB.txt
如果你想要多个块,你将需要一个循环。这里我只是从 0 循环到 3:
#!/bin/bash
for block in {0..3}; do
echo Grabbing block $block
curl --silent --output - --user user:password 'ftp://127.0.0.1/tmp/ppm.c' | dd bs=100 count=1 skip=$block > Block${block}.txt
done
很抱歉问题的标题,但我是。它确定如何最好地总结这一点。基本上我在服务器上托管了非常大的文本文件。我没有能力下载整个文件。我有一个 shell 脚本,我想在文本文件的各个行上 运行。有没有办法(ftp)下载文件块并在该块上执行 shell 脚本,然后下载下一个块(最好覆盖前面的块)以执行 shell脚本等
您应该能够在 FTP
模式下使用 curl
执行此操作,方法是将输出更改为 stdout
而不是本地文件名,然后使用 dd
或 head
或 tail
获取数据。
以下通过 FTP 连接到我的本地主机并获取文件 <HOME>/tmp/ppm.c
然后使用 dd
将块大小设置为 1k
并跳过第一个块,将输出写入文件 2nd1kB.txt
.
curl --output - --user user:password 'ftp://127.0.0.1/tmp/ppm.c' | dd bs=1024 skip=1 count=1 > 2nd1kB.txt
如果你想要多个块,你将需要一个循环。这里我只是从 0 循环到 3:
#!/bin/bash
for block in {0..3}; do
echo Grabbing block $block
curl --silent --output - --user user:password 'ftp://127.0.0.1/tmp/ppm.c' | dd bs=100 count=1 skip=$block > Block${block}.txt
done