Найдите файл и отправьте его на 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Вы можете передать несколько команд вместе, чтобы достичь желаемого результата.