로컬 디렉토리에 다음과 유사한 파일 이름을 가진 672개의 파일이 있습니다: boutique-*_20160116hh0000.csv
, general-tgbt_1_20160116hh0000.csv
, 여기서 hh - 시간 및 (예: boutique-a13_15_20160116060000.csv
etc. boutique-a16_18_20160116070000.csv
) boutique-a05_7_20160116190000.csv
.
Bash에서 다음 명령을 실행합니다.
(for i in `ls -1 | sort`; do cat $i | while read line; do echo "${i%%_2016*}," $line; done ; done;) > c.csv
무한 루프가 발생하고 파일 c.csv
크기가 증가합니다.
어떤 이유?
c.csv
내 파일도 결과에 멈춘 것 같습니다 .
`ls -1 | sort`
그런데 이런 행동이 맞는 걸까요?
첫 번째 댓글을 받은 후 다른 테스트를 시도했습니다. 672개 대신 4개의 파일만 유지합니다(boutique-a05_7_20160116220000.csv, Boutique-a16_18_20160116020000.csv, General-tgbt_1_20160116170000.csv, wago-pfc-750 -815_99_20 16 0116020000.csv) 그리고 내 명령이 훌륭하게 작동합니다.
감사해요
답변1
결과를 다른 곳에 두는 것이 좋습니다. 출력이 ls
정렬되었지만 여전히 필요하지 않습니다. 스크립트를 다음과 같이 줄입니다.
for i in *.csv ; do
while read line ; do
echo "${i%%_2016*}," $line
done <$i
done >/tmp/c.csv