2

私は bash スクリプトの初心者であり、ディレクトリ内の最新の .mpg ファイルを見つけて ftp サーバーに送信するスクリプトを作成する必要があります。これまでのところ、ファイルを見つけるコマンドを見つけました。

#! /bin/bash

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

これは機能しますが、そのコマンドの出力を ftp サーバーに送信する方法がわかりません。変数を使用する必要があると読みましたが、今のところ理解できません。

4

1 に答える 1

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 ...

lswhere内のファイルを一覧表示し、拡張子を持つ任意のファイル名 where に展開し/home/user/directory/*.mpgます。時間順にリストするように指示し、最も古いものではなく最新のものを最初にするため、逆ソートです。このコマンドは、 oneや fiveなど、必要な結果の数のみを表示するために使用されます。通常、ファイル内の特定の行数のみを表示するために使用され、実行するファイルの最初の行を表示します。*.mpg-tls-rhead-1-5headhead -1 file.txt

パイプの例:

grepfiles/stdout 内のテキストを検索するために使用されます

firefoxが最初の行に含まれているかどうかを知りたい場合file.txtは、 topipeの出力を使用します。head -1 file.txtgrep firefox

head -1 file.txt | grep firefox

複数のコマンドを一緒にパイプして、必要な結果を得ることができます。

于 2012-10-06T14:09:02.460 に答える