特定のファイルを検索するには、次のコマンドを使用します。
find . -type f -name Client.php | xargs grep WARNING
削除コマンドが発生する前にユーザーにメッセージが表示されるように削除コマンドを追加する方法がわかりません。
答え1
xargs
ここでパイプを接続してクエリに再参加することはできず、find
別々にコマンドを実行できます。grep
これ-exec
基本的な1 つ以上のファイルに対してコマンドを実行します。コマンド自体が成功した結果で終了した場合にのみ成功し、右側のオペランドを処理し続けるため
find . -type f -name Client.php -exec grep -q WARNING {} \; -exec echo {} \;
〜する印刷する「WARNING」を含む「Client.php」という名前のすべてのファイルへのパス。秒を変更-exec ... \;
して-delete
削除したり、コマンドを変更して使用または処理rm
したりmv
できます。
セミコロンは一度に1つのファイルのみをチェックし、成功すると次のような実際の動作を取得します。
基本式に<セミコロン>が付いている場合、ユーティリティはユーティリティ名各パス名に対して一度呼び出され、ユーティリティーが終了状態でゼロ値を返す場合、デフォルトのパスはtrueと評価する必要があります。
全体が-exec ... \;
1つのブロックなので、使用する場合は、コマンドだけで-delete
なくセミコロンも削除する必要があります。-exec
上記のコマンドを実行することをお勧めします最初そして、実際に削除する前に、必要なファイルだけが含まれていることを確認してください。ただし、要求しない完全な削除コマンドは次のとおりです。
find . -type f -name Client.php -exec grep -q WARNING {} \; -delete
気をつけて進めてください!
答え2
スクリプトを書くことができます:
#!/bin/bash
FINDFILE=Client.php
if [[ $(find . -type f -name $FINDFILE | xargs grep "WARNING") ]] ; then
rm -i $FINDFILE
else
echo "File with warning not found."
fi
/usr/local/bin, chmod +x /usr/local/bin/scriptname にスクリプトを配置します。
今、いつでもどこでもできます。(.sh拡張子を使用しないことをお勧めします)