2012-10-06 28 views
2

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

#! /bin/bash 

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

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

回答

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或五个-5head通常用于查看文件中只有一定数量的行,以查看文件中的第一行,我们将运行head -1 file.txt

管例如:

grep被用来搜索文件中的文本/标准输出

所以,如果你想知道,如果firefox被包含在file.txt第一线,我们会的head -1 file.txt输出pipegrep firefox

head -1 file.txt | grep firefox

可以管多个命令一起ACHI前夕你想要的结果。

+0

我想我必须使用find命令,因为这个脚本将在cron作业中使用,并且最新的文件将在最近50分钟内被修改。请帮我用这个“pipe to your ftp”命令。 – ispasov

+0

我找到了我的解决方案: 查找命令是: 'find/home/user/path-to-folder/-type f -mtime -1 -name * .avi \(!-regex“。*/\ .. *” \))' FTP命令是 '的lftp -u用户名,密码your.ftp << EOF 坎德拉/ 液晶/家庭/用户/路径至夹 镜-R 退出0 EOF' – ispasov

相关问题