我是bash脚本的新手,我必须编写一个脚本,在目录中找到最新的.mpg文件,然后将其发送到ftp服务器。到目前为止,我找到了找到我的文件的命令。
#! /bin/bash
find /home/user/directory -type f -mmin -50 -name *.mpg \( ! -regex ".*/\..*" \)
这有效,但我无法弄清楚如何将该命令的输出发送到ftp服务器。我已经读过我必须使用变量,但到目前为止我无法理解它们。
答案 0 :(得分: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/*.mpg
中*
扩展为.mpg
扩展名的任何文件名的文件。 -t
告诉ls
按时间顺序列出,-r
是反向排序,因为我们希望最新的第一个不是最旧的。 head
命令仅用于显示我们想要的结果数量,例如-1
或五个-5
。 head
通常仅用于查看文件中的特定行数,以查看我们将运行的文件中的第一行head -1 file.txt
。
管道示例:
grep
用于搜索files / stdout
因此,如果您想知道firefox
的第一行是否包含file.txt
,我们会pipe
head -1 file.txt
到grep firefox
的输出
head -1 file.txt | grep firefox
您可以将多个命令组合在一起以获得所需的结果。