GNU/Linux >> Linux の 問題 >  >> Linux

検索-exec+対検索| Xargs:どちらを選択しますか?

-execを理解しています +を取ることができます xargsの動作を模倣するオプション 。あるフォームを他のフォームよりも優先したい状況はありますか?

パイプの使用を避けるためだけなら、私は個人的に最初の形式を好む傾向があります。私は確かにfindの開発者を理解しています 適切な最適化を行っている必要があります。正しいですか?

承認された回答:

あなたは見つけるために呼び出しを連鎖させたいかもしれません(あなたが学んだとき、それが可能であると一度、それは今日かもしれません)。もちろん、これはあなたが検索にとどまっている間だけ可能です。 xargsにパイプすると、範囲外になります。

小さな例、2つのファイルa.lstとb.lst:

cat a.lst
fuddel.sh
fiddel.sh

cat b.lst
fuddel.sh

ここではトリックはありません。両方に「fuddel」が含まれているのに、一方だけに「fiddel」が含まれているという事実です。

それを知らなかったとしましょう。 2つの条件に一致するファイルを検索します:

find -exec grep -q fuddel {} ";" -exec grep -q fiddel {} ";" -ls
192097    4 -rw-r--r--   1 stefan   stefan         20 Jun 27 17:05 ./a.lst

ええと、grepまたは別のプログラムが両方の文字列を条件として渡すための構文を知っているかもしれませんが、それは重要ではありません。ここでは、引数としてファイルを指定すると、trueまたはfalseを返すことができるすべてのプログラムを使用できます。grepは一般的な例にすぎません。

また、 find -execをフォローすることもできます。 -lsなどの他の検索コマンドを使用する または-削除 または同様のもの。削除はrm(ファイルを削除する)だけでなく、rmdir(ディレクトリを削除する)も行うことに注意してください。

このようなチェーンは、特に指定されていない限り(つまり、-orを使用して)、コマンドのANDの組み合わせとして読み取られます。 スイッチ(およびパレン(マスキングが必要)))。

つまり、検索チェーンを離れることはありません。これは便利なことです。 -xargsを使用しても利点はありません。ファイルの受け渡しに注意する必要があるためです。これは、見つける必要がないことです。各ファイルの受け渡しを単一の引数として自動的に処理します。

>

中括弧を見つけるためにマスキングが必要だと思われる場合は、証拠を求める私の質問に気軽にアクセスしてください。私の主張は:あなたはしません。

関連:順守-意味を見つける-辞書検索!
Linux
  1. サーバー用のDebianとUbuntu、どちらを選択するか

  2. AlmaLinuxとRockyLinux:どちらを選択しますか?

  3. 使用されているシリアルポートを見つける方法は?

  1. Recursive Grep Vs Find / -type F -exec Grep {};どちらがより効率的/高速ですか?

  2. Find To Workで-execオプションを取得しますか?

  3. 多数のXmlファイルを再フォーマットしますか?

  1. -execが失敗した場合の検索から抜け出しますか?

  2. 検索から文字列を返す{}を操作します-exec?

  3. パイプを含める方法 |私のLinuxのfind -execコマンドで?