Найдите файл и отправьте его на ftp
Я новичок в bash scripting, и мне нужно написать сценарий, который находит самые новые .mpg-файл в каталоге, а затем отправляет его на ftp-сервер. До сих пор я нашел команду, которая находит мой файл.
#! /bin/bash
find /home/user/directory -type f -mmin -50 -name *.mpg ( ! -regex ".*/..*" )
Это работает, но я не могу понять, как отправить вывод этой команды на ftp-сервер. Я читал, что мне приходится использовать переменные, но я не могу понять их до сих пор.
1 ответ:
Use может передавать выходные данные из одной команды в качестве входных данных в другую с помощью
|
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
используется для поиска текста в файлах / stdoutfirefox
в первой строкеfile.txt
, мы быpipe
вывелиhead -1 file.txt
вgrep firefox
head -1 file.txt | grep firefox
Вы можете передать несколько команд вместе, чтобы достичь желаемого результата.