コマンドの出力を rm コマンドにパイプします。

コマンドの出力を rm コマンドにパイプします。

次のコマンドは、再生中の曲のパスを印刷します。

mpc | head -n 1 
songs/oldSongs/Mukesh_D/041 KANHAIYA = YAAD AAYI ADHI RAAT KO.mp3

ファイルを印刷するコマンドを変更してファイルを削除できますか?

ベストアンサー1

より一般的な質問に答えるには、xargs標準入力の単語リストを取得してコマンドの引数リストに変換する必要があります。

ただしxargs、リストは、単一引用符、二重引用符、およびバックスラッシュを使用してエスケープされた空白、タブ、および改行(ロケールとxargsの実装に応じてより多くの空白文字を使用できる)で区切られた単語のリストとして期待されます。 xargsの別の実装を介してネストされているという点で動作)。

入力が改行で終わるリストの場合規範的アプローチこれをxargsに変換します。予想される形式は、すべての文字をエスケープすることです(バックスラッシュ、一重引用符、二重引用符、アンダースコア(おそらく)、スペースおよびタブのみが必要ですが(Cロケール以外の場合は他のスペースも必要です))バックスラッシュ文字の改行文字にsed

mpc | head -n 1 | sed 's/./\\&/g' | xargs rm --

一部のxargs実装では、標準入力で予想される最大行長の制限がやや低いため、これを使用して必要な文字だけをエスケープできます。

少なくともGNUではxargsこれを行う必要はありません。次のようにします。

mpc | head -n 1 | xargs -rd '\n' rm --

(また、入力が空のときにコマンドを実行しないようにするには、GNU関連の-rオプションを使用してください。)

おすすめ記事