이 코드를 사용하여 "파일 이름"과 "줄 번호"를 읽고 인쇄하고 있지만 코드가 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
.