ウェブサイト検索

初心者向けの Linux Xargs コマンドの 12 の実践例


Xargs は、標準入力からデータのストリームを読み取り、コマンド ラインを生成して実行する優れたコマンドです。つまり、コマンドの出力を受け取り、それを別のコマンドの引数として渡すことができます。コマンドが指定されていない場合、xargs はデフォルトで echo を実行します。標準入力ではなくファイルからデータを読み取るように指示する人も多いでしょう。

コマンド ラインの日常的な使用において、xargs が役立つ方法がいくつかあります。この記事では、初心者向けに実践的なLinuxのxargsコマンド例12個を解説します。

1. 最初の例は、次のように tar ユーティリティを使用して、すべての .png イメージを検索し、アーカイブする方法を示しています。

ここで、アクション コマンド -print0 により、標準出力に完全なファイル パスを出力できるようになり、その後に null 文字と -0 の xargs フラグがファイル名のスペースを効果的に処理します。

find Pictures/tecmint/ -name "*.png" -type f -print0 | xargs -0 tar -cvzf images.tar.gz

2. 次のように xargs を使用して、ls コマンドからの複数行の出力を単一行に変換することもできます。

ls -1 Pictures/tecmint/
ls -1 Pictures/tecmint/ | xargs

3. システム上のすべての Linux ユーザー アカウントの簡潔なリストを生成するには、次のコマンドを使用します。

cut -d: -f1 < /etc/passwd | sort | xargs

4. ファイルのリストがあり、リスト内の各ファイルの行数、単語数、文字数を知りたい場合は、ls コマンドを使用して、この目的のためのxargsは次のようになります。

ls *upload* | xargs wc

5. Xarags では、ディレクトリを検索して再帰的に削除することもできます。たとえば、次のコマンドは、Downloads ディレクトリ内の DomTerm を再帰的に削除します。

find Downloads -name "DomTerm" -type d -print0 | xargs -0 /bin/rm -v -rf "{}"

6. 前のコマンドと同様に、現在のディレクトリで net_stats という名前のファイルをすべて検索して削除することもできます。

find . -name "net_stats" -type f -print0 | xargs -0 /bin/rm -v -rf "{}"

7. 次に、xargs を使用してファイルを複数のディレクトリに一度にコピーします。この例では、ファイルをコピーしようとしています。

echo ./Templates/ ./Documents/ | xargs -n 1 cp -v ./Downloads/SIC_Template.xlsx 

8. 次のように、find コマンド、xargs および rename コマンドを一緒に使用して、特定のディレクトリ内のすべてのファイルまたはサブディレクトリの名前を小文字に変更することもできます。

find Documnets -depth | xargs -n 1 rename -v 's/(.*)\/([^\/]*)/$1\/\L$2/' {} \;

9. ここでは、xargs の別の便利な使用例を示します。これは、指定された拡張子を持つ 1 つまたはいくつかのファイルを除く、ディレクトリ内のすべてのファイルを削除する方法を示しています。

find . -type f -not -name '*gz' -print0 | xargs -0 -I {} rm -v {}

10. 前述したように、次のように -a フラグを使用して、標準入力の代わりにファイルから項目を読み取るように xargs に指示できます。

xargs -a rss_links.txt

11. -t フラグを使用して冗長性を有効にできます。これにより、コマンド ラインを実行する前に標準エラー出力に出力するように xargs に指示されます。

find Downloads -name "DomTerm" -type d -print0 | xargs -0 -t /bin/rm -rf "{}"

12. デフォルトでは、xargs は空白スペースを使用して項目を終了/区切ります。-d フラグを使用して区切り文字を設定できます。単一文字、\n などの C スタイルの文字エスケープ、または 8 進数または 16 進数のエスケープ コード。

さらに、図に示すように -p フラグを使用して、各コマンド ラインを実行してターミナルから行を読み取るかどうかについてユーザーにプロンプトを表示することもできます (単に y と入力します)。 はいまたはいいえの場合はn)。

echo ./Templates/ ./Documents/ | xargs -p -n 1 cp -v ./Downloads/SIC_Template.xlsx 

詳細については、xargs のマニュアル ページを参照してください。

man xargs 

今のところはここまでです! Xargs は、コマンド ラインを構築するための強力なユーティリティです。これは、あるコマンドの出力を別のコマンドの引数として渡して処理するのに役立ちます。この記事では、初心者向けに実践的な xargs コマンドの例を 12 個説明しました。以下のフィードバック フォームからご意見やご質問をお聞かせください。