我是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
中的文件,其中*
扩展为任何扩展名为.mpg
的文件名。-t
告诉ls
按时间顺序列出,-r
是反向排序,因为我们想要最新的第一个,而不是最旧的。head
命令仅用于显示我们想要的结果数,如一个-1
或五个-5
。head
通常用于只查看文件中的特定行数,要查看文件中第一行,我们将运行head -1 file.txt
。
管道示例:
grep
用于搜索文件/stdout 中的文本
因此,如果您想知道firefox
是否包含在file.txt
的第一行中,我们将pipe
作为head -1 file.txt
到grep firefox
的输出
head -1 file.txt | grep firefox
可以通过管道将多个命令连接在一起以获得所需的结果。