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