2

我是 bash 脚本的新手,我必须编写一个脚本,在目录中找到最新的 .mpg 文件,然后将其发送到 ftp 服务器。到目前为止,我找到了找到我的文件的命令。

#! /bin/bash

find /home/user/directory -type f -mmin -50 -name *.mpg \( ! -regex ".*/\..*" \)

这可行,但我不知道如何将该命令的输出发送到 ftp 服务器。我读过我必须使用变量,但到目前为止我无法理解它们。

4

1 回答 1

1

使用可以通过管道将一个命令的输出作为另一个命令的输入|

find /home/user/directory -type f -mmin -50 -name *.mpg \( ! -regex ".*/\..*" \) | ftp ...

查找最新 mpg 文件的更简单方法:

ls -rt /home/user/directory/*.mpg | head -1 | ftp ...

如果您想发送多个文件,则需要xargs ,即 5 个最新文件

ls -rt /home/user/directory/*.mpg | head -5 | xargs ftp ...

ls列出/home/user/directory/*.mpgwhere中的文件*扩展为带有扩展名的任何文件名.mpg-t告诉ls按时间顺序列出并且-r是反向排序,因为我们想要最新的在前而不是最旧的。该head命令仅用于显示我们想要的结果数,例如 1-1或 5 -5head通常用于仅查看文件中一定数量的行,以查看我们将运行的文件中的第一行head -1 file.txt

管道示例:

grep用于在文件/标准输出中搜索文本

因此,如果您想知道是否firefox包含在第一行中,file.txt我们将pipe输出head -1 file.txttogrep firefox

head -1 file.txt | grep firefox

您可以将多个命令连接在一起以实现您想要的结果。

于 2012-10-06T14:09:02.460 回答