サブディレクトリから「ファイルの文字列」をgrepしてから、「フォルダ全体」をコピーします。

サブディレクトリから「ファイルの文字列」をgrepしてから、「フォルダ全体」をコピーします。

努力しています:

  1. 私はすべてのサブディレクトリ(約50個のフォルダ)にあるすべてのファイル(ファイル名:OUTCAR.txt)で「精度要求」文字列を探しています。

  2. 検索文字列を含むファイルを含むフォルダのみを別の場所にコピーする

現在私の解決策は次のとおりです。

1. grep -r "required accuracy" 

しかし、OUTCARというファイルからのみ検索したいと思います。それ以外の場合は、私のリストのフォルダに2つのファイルがあります。

2. grep -r "required accuracy" OUTCAR -exec scp -r {} ./final location

grepコマンドを使用して見つかったファイルのリストからフォルダのリストを抽出する方法がわかりません。たぶん、findコマンドを使用してファイル内の文字列を見つけることができますか?

ベストアンサー1

find利用可能な場合-execdir:

find . -type f -name "OUTCAR.txt" \
-exec grep -q "required accuracy" {} \;
-execdir scp -r ./ "/path/to/final location" \;
  • -type f()を含むすべてのファイルを見つけます-name OUTCAR.txt
  • grep本書の「必要な精度」については、
  • grep成功したら、scpファイルがあるディレクトリで...を実行します-execdir

これは絶対パスでなければなりません。/path/to/final/locationそれ以外の場合。$PWD/relative/path/from/where/find/is/executed

おすすめ記事