grep出力をrmに供給

grep出力をrmに供給

出力grepをにパイピングしようとしましたが、rm役に立たない内容が出力されます。必要なスイッチはありますかrm?それともrm正規表現を直接提供できますか?

ls | grep '^\[Daruchini'| rm

rm:オペランドはありません。詳細については、「rm --help」を試してください。

答え1

標準入力xargsを。rm

$ ls | grep '^Dar' | xargs rm

(ファイル名の特殊文字に注意してください。GNU grepを使用してください。

$ ls | grep -Z '^Dar' | xargs -0 rm

)

また、シェルでは正規表現を使用しませんが、これは単純なパターンです。

$ rm Dar*

(そしてもう寝るべきだと思います。)

答え2

出力を解析しません。ls

この時点で、シェルに必要なファイルを簡単にフィルタリングさせることができます。パターンを拡張することはコマンドでDar*はなくシェルであることに注意してください。rmシェルが実行するパターン拡張と呼ばれます。ワイルドカード

rm Dar*

より複雑な場合は、コマンドを見つけてくださいfind

答え3

出力をパラメータとして渡すには、xargsに慣れていないため、whileループを使用する傾向があります。

ls | grep '^Dar' | while read line; do rm "$line";done;

答え4

Catalina 10.15.3でzshを使用して改行とスペースを処理する方法は次のとおりです。

 sudo find / | grep -i 'yourString' | tr '\n' '\0' | xargs -0 -n1 rm -r 

つまり、 "rm -0"を使用して新しい行を削除する前に、空白なしで(tr \ nから\ 0に)新しい行を翻訳してください。

また、「find -iname」は時々何も出力しないため、常に「find」+「grep -i」を使用します。

最後の注意:「yourString」に一致するファイルとフォルダを見つけて削除します。ファイルの場合のみ「find -type f」を指定した場合、rm オプション「-r」は効果がありません。

関連情報