xargsにどの引数を選択するかをどのように伝えますか? [コピー]

xargsにどの引数を選択するかをどのように伝えますか? [コピー]

xargsが最初のコマンドの出力を2番目のコマンドのパラメータにリダイレクトし、どのパラメータが出力のどの要素に対応するかを選択する方法がない場合は、1つの方法があります。

ls | xargs file  # there are as many arguments as files in the listing,
                 # but the user does not have too choose himself

これで選択する必要がある場合:

ls | xargs file | grep image | xargs mv.....   # here the user has to 
                                               # deal  with two arguments of mv, first for source second for destination, suppose your destination argument is set already by yourself and you have to put the output into the source argument. 

xargsに、最初のコマンドの標準出力を2番目のコマンドで選択した引数にリダイレクトするように指示します。

ここに画像の説明を入力してください。

ベストアンサー1

-Iに渡されるパラメータの各値に置き換えられるプレースホルダを定義できますxargs。例えば、

ls -1 | xargs -I '{}' echo '{}'

出力はecho1行に1回呼び出されます。のようなプレースホルダーなので、よく使われることがlsわかります。'{}'find

あなたの場合、file一致するファイル名を抽出するために前処理された出力も必要です。そこには1つあるので、grepこれを使用awkして両方の操作を実行し、file呼び出しを簡素化できます。

file * | awk -F: '/image/ { print $1 }' | xargs -I '{}' mv '{}' destination

GNUがある場合は、それを使用して複数のソースファイルを渡すmvことができます。-t

file * | awk -F: '/image/ { print $1 }' | xargs mv -t destination

おすすめ記事