ファイルをサブディレクトリに出力

ファイルをサブディレクトリに出力

egrepテキストでいっぱいのフォルダでさまざまなパターンを実行し、結果を適切なフォルダに出力したいと思います。また、これは私がよく使うワークフローなので、シンプルで簡潔に保つことを試みました。

そのため、テキストでいっぱいのフォルダがあり、docs2つの異なる正規表現パターン(regex1とregex2)を見つけて出力したいと思いますdocs/regex1docs/regex2

これがうまくいくと思います。

mkdir {docs/regex1,docs/regex2}
for file in docs/*
do
    egrep -o -f regex1 "$file" > regex1/"${file%.*}"_regex1.txt
    egrep -o -f regex2 "$file" > regex2/"${file%.*}"_regex2.txt
done

これによりエラーが発生します。

regex1/docs/001_regex1.txt: No such file or directory
regex2/docs/001_regex2.txt: No such file or directory

各ファイルに。 regex1/docsに移動するのではなく、docs/regex1に移動するように出力を設定するにはどうすればよいですか?

ベストアンサー1

サンプルスクリプトには次のものがあります。

egrep -o -f regex1 "$file" > regex1/"${file%.*}"_regex1.txt
egrep -o -f regex2 "$file" > regex2/"${file%.*}"_regex2.txt

ところで、あなたはこう尋ねます。

各ファイルに。 regex1/docsに移動するのではなく、docs/regex1に移動するように出力を設定するにはどうすればよいですか?

regex1出力をリダイレクトするパスの先頭に明示的に配置します。必要に応じてこの問題を修正してから、デフォルトのパスを削除してください$file

egrep -o -f regex1 "$file" > docs/regex1/"$( basename "${file%.*}" )"_regex1.txt
egrep -o -f regex2 "$file" > docs/regex2/"$( basename "${file%.*}" )"_regex2.txt

おすすめ記事