2011-09-13 3 views
2

나는 파일을 반복적으로 디렉토리에 저장하고 있지만, 일부 파일에는 마지막 줄 다음에 개행 문자가 없어서 문제가 발생합니다.
프로세스의 각 파일에 줄 바꿈을 어떻게 추가합니까? 여기에 쉘 스크립트의셸 스크립트에 개행 문자가있는 고양이 파일

 

    find $1 -type f |xargs cat > test.csv 

답변

1

사용 A의 루프 :

find $1 -type f | while IFS= read -r file 
do 
    cat "$file" 
    echo 
done > test.csv 
2

for f in `find $1 -type f`; do sed -E '$s/(.*\S+.*)/\1\n/' $f; done 

편집 : 당신은 당신이 다음을 수행 할 수 있습니다, 마지막 라인으로 그 자체로 줄 바꿈을하지 않는 파일의 줄 바꿈을 추가하고 싶었 내 첫 번째 대답은 xargs를 사용하지만은 제공하지 않았다 예상 된 결과가 다시 루프에서 떨어졌습니다.

1
find $1 -type f |xargs awk 'FNR==1 && NR>1 {print ""} {print}' 

또는

find $1 -type f |xargs awk 'ENDFILE {print ""} {print}' 
1

경우 : 당신은 루프를 사용할 수 있습니다

for file in $(find .); do cat $file >> huge_file; echo " " >> huge_file; done 
4

나는 이것이 상당히 오래된 질문이라는 것을 알고 있지만, 나는 똑같은 문제가있다. 위의 답변 중 아무 것도 백틱 및/usr/bin/find를 사용하기 때문에 공백이있는 파일에는 사용할 수 없습니다. 그렇게하면 파일을 사용해야 만하지 않는 한 절대적으로 필요하지 않은 $ IFS를 변경해야합니다.

for i in *; do cat "$i" && echo ""; done 
:

이 그것에 내 걸릴 것입니다

관련 문제