みなさんこんにちは。私は梁旭です。 Linux を使用しているときに、いくつかのコマンドを連結する必要があるが、コマンドの 1 つがパイプ入力を受け入れないという状況に遭遇したことはありませんか?この場合、 Linux では、すべての標準アプリケーションに 3 つのデータ ストリームが関連付けられています。これらは、標準入力ストリーム (stdin)、標準出力ストリーム (stdout)、および標準エラー ストリーム (stderr) です。これらのストリームはテキストを通じて動作し、テキストを使用して入力 (stdin) をコマンドに送信し、応答 (stdout) がターミナル ウィンドウにテキストとして表示されます。エラー メッセージは、ターミナル ウィンドウ (stderr) にテキストとしても表示されます。 Linux や Unix 系オペレーティング システムの優れた機能の 1 つは、1 つのコマンドの標準出力ストリームを別のコマンドの標準入力ストリームにパイプできることです。最初のコマンドは、その出力がターミナル ウィンドウに書き込まれるかどうかを気にしません。また、2 番目のコマンドは、その入力がキーボードから行われるかどうかを気にしません。 すべての Linux コマンドには 3 つの標準ストリームがありますが、すべてのコマンドが別のコマンドの標準出力を標準入力ストリームへの入力として受け入れるわけではありません。したがって、これらのコマンドに入力をパイプすることはできません。 xargs コマンド
$ ls -1 ./*.sh このコマンドは、現在のディレクトリ内のシェル スクリプト ファイルを一覧表示します。 出力を $ ls -1 ./*.sh | xargs ご覧のとおり、出力は長いテキスト文字列としてターミナルに書き込まれます。このことから、 wc コマンドで xargs を使用する
$ ls *.c | xargs wc 実行結果は次のとおりです。 コマンドの結果には、合計だけでなく各ファイルの統計も表示されます。 このコマンドは次の操作を実行します。 確認メッセージ付きでxargsを使用する
$ echo '1,2,3' | xargs -p touch ターミナルには実行されるコマンドが表示され、 $ 1 2 3 複数のコマンドで xargs を使用する
少し抽象的なので、例を挙げて説明しましょう。 まず、 $ ツリー -d 現在、サブディレクトリは images のみになります。 directors.txt ファイルには、作成するディレクトリの名前がいくつか含まれています。まずは $ cat ディレクトリ.txt これらの内容を入力データとして $ cat ディレクトリ.txt | xargs -I % sh -c 'echo %; mkdir %' このコマンドは次の操作を実行します。 cat directorys.txt : directorys.txt ファイルの内容 (作成するすべてのディレクトリ名) を コマンド実行結果: ディレクトリが作成されたかどうかは、 $ ツリー -d ファイルを複数の場所にコピーする
まず、 2 つのディレクトリの名前を ここでは、 $ echo ~/dir1/ ~/dir2/ | xargs -n 1 cp -v ./*.c ファイルを 2 つのディレクトリに 1 つずつコピーしました。 ネストされたディレクトリ内のファイルの削除 ファイル名にスペースやその他の特殊文字 (改行など) が含まれている場合、 ここでは $ find . -name "*.png" -type f -print0 | xargs -0 rm -v -rf "{}" このコマンドは次のアクションを実行します。 find . -name “*.png”: コマンドを実行すると、すべてのサブディレクトリが検索され、一致するファイルが削除されます。 ネストされたディレクトリの削除 ネストされたサブディレクトリのセットを削除したいとします。まず、 $ ツリー -d $ find . -name "level_one" -type d -print0 | xargs -0 rm -v -rf "{}" このコマンドは find を使用して、現在のディレクトリで level_one というディレクトリを再帰的に検索し、そのディレクトリ名を このコマンドと前のコマンドの違いは、検索される項目が最上位ディレクトリの名前であり、 削除される各ディレクトリの名前が印刷されます。 $ ツリー -d ネストされたサブディレクトリはすべて削除されました。 1つのファイルタイプを除くすべてのファイルを削除します
$ find . -type f -not -name "*.sh" -print0 | xargs -0 -I {} rm -v {} コマンドを実行した後、 $ ls -l Xargs で圧縮ファイルを作成する
現在のディレクトリで $ find ./ -name "*.sh" -type f -print0 | xargs -0 tar -cvzf script_files.tar.gz コマンド実行結果には、すべての .sh ファイルがリストされ、圧縮ファイルが作成されます。 要約する Linux で xargs コマンドを使用する方法についてはこれで終わりです。Linux で xargs コマンドを使用する方法についての詳細は、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: Vueユーザーが長時間操作せずにログインページからログアウトするように実装する2つの方法
目次1. 事務:取引の 4 つの主な特徴:同時トランザクションはどのような問題を引き起こしますか? ...
WeChatアプレット計算機の例、参考までに、具体的な内容は次のとおりです。インデックス.wxml ...
ルート ルーティング コンポーネント (アプリの下のルート ルーティング コンポーネント。子コンポー...
導入MySQL はレプリケーションを通じてストレージ システムの高可用性を実現します。現在、MySQ...
序文この記事には1. データベースのいくつかの主要な制約2. テーブル間の関係制約:主キー制約: 機...
目次ユニオンクエリ1. 中国の各省のIDと名前を照会する2. 湖南省のすべての地級市のIDと名称3....
これらの 3 つのタグを間違った方法で使用して、タイトルを表に沿わせたり、tbody の高さを固定し...
HTML コメント。コードの横に HTML コメントを付ける必要があることがよくあります。そうするこ...
MySQL 全文検索中国語ソリューション最近、会社のプロジェクトで、データベースで中国語を検索する機...
目次序文導入1. 作用機序2. 自然から3. 時計と計算の比較4. メソッドはデータロジックの関係を...
目次1. MySQLトリガーの作成: 1. MySQLトリガー作成構文: 2. MySQL作成構文の...
1. .shファイルを実行する./sh ファイルを使用して直接実行することもできますが、現在のターミ...
目次概要演算子の改良と正確なinstanceofよりスマートなオブジェクトリテラル推論固有のシンボル...
コンテナの起動時に Docker コンテナ内のアプリケーション サービスを自動的に起動する場合。 D...
目次1. import_tableの紹介2. データのロードとテーブル関数のインポートの例2.1 L...