このコードを使用して「ファイル名」と「行番号」を読み取って印刷していますが、コードは1つのディレクトリを読み取ってからエラーメッセージなしで停止できません。 !
#!/bin/bash
find . -type d > mydirectory.txt
MyDir=mydirectory.txt
while read -r line; do
FileDir=$line/*.txt
for file in ${FileDir}
do
awk 'END{q="\047"; print "filename",", nlines"; print q FILENAME q "," q NR q}' "$file"
done > list.txt
done < mydirectory.txt
最初の行:
find . -type d > mydirectory.txt
すべてのディレクトリとサブディレクトリをインポートし、「mydirectory.txt」に保存します。
次に、「mydirectory.txt」の各行を読みます。
while read -r line; do
FileDir=$line/*.txt
コードは最初のディレクトリでのみ検索します。挨拶
答え1
あなたのスクリプトが何をしているのかは完全には明確ではありませんが、次のようなことをしているとします。
{
echo "filename,nlines"
find . -type f -name '*.txt' -exec \
awk -v q="'" 'BEGIN{OFS=q","q}
ENDFILE{print q FILENAME, FNR q}' {} +
} > list.txt
上記はGNU awkを使用して行われますENDFILE
。