ディレクトリのサブディレクトリを繰り返しながら、2つのファイルをawkスクリプトの引数としてインポートする必要があります。このスクリプトは2つのファイルを比較し、追加ファイルを生成します。
私はこれを持っています。ただし、パラメータファイルとしてawkスクリプトが必要です。 ".*1.txt" および ".*2.txt"
for i in words/*/*1.txt words/*/*2.txt
do
awk -f corpus_vs_flexion.awk "$i"
done
それは次のとおりです。
awk -f corpus_vs_flexion.awk .*1.txt .*2.txt
# Taking them from each subdirectory in words/*
Directory words/
subdirectory Peter/
whatever.txt
whatever1.txt
whatever.txt
whatever.txt
whatever2.txt
subdirectory Blas/
whatever1.txt
whatever.txt
whatever.txt
whatever.txt
whatever2.txt
........./
.....
..
For each subdirectory loop: awk -f corpus_vs_flexion.awk whatever1.txt whatever2.txt
答え1
いいですね。ファイル名がペアである場合は、次のものを使用できます。
for f in words/*/*1.txt ; do awk -f corpus_vs_flexion.awk "$f" "${f%1.txt}2.txt" ; done
この"${f%1.txt}2.txt"
フレーズは「ファイル名を使用します"$f"
が、末尾を削除して末尾1.txt
を追加2.txt
」を意味します。
答え2
私はbashの本を読んでいて、私に必要なものを見つけました!
typ1_files=(words/*/*1.txt)
typ2_files=(words/*/*2.txt)
for ((i=0;i<=${#typ1_files[@]};i++)); do
awk -f corpus_vs_flexion.awk "${typ1_files[i]}" "${typ2_files[i]}"
done
答え3
ファイル検索が徹底し、他のファイルと一致しないと確信できる場合は、for
ループを失い、コマンド置換を使用して単純化してくださいfind
。
awk -f corpus_vs_flexion.awk $(find /path/to/your/dir -name "*.txt" -type f | tr '\n' ' ')
^^^^^^^^^^^^^^^^^ Put your dir here
答え4
私はラルフの答えが好きです。これも機能します(テストされていません)
find. -name '*[12].txt' -print0 | xargs -0 -n 2 awk '...'