2012-10-06 31 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

相關問題