폴더의 파일 반복

폴더의 파일 반복

파일이 포함된 폴더가 있고 unix 명령 "tr"을 사용하여 이전과 동일한 이름의 출력을 사용하여 파일을 반복해야 합니다(가능한 경우)(아래 코드는 작동하지 않음).

FILES=/root/Desktop/prova/*
for f in $FILES ; do
    echo "Processing $f file..."
    cat $f | tr "\n" "," > $f.tmp & mv $f.tmp $f 
done

cat "$f" | tr "\n" "," > "$f"이 명령을 사용 하고 각 파일의 출력을 리디렉션하는 방법을 이해할 수 없습니다 . 그런 다음 또 다른 for 루프를 사용하여 N개의 도구 명령을 생성하고 함께 실행해야 합니다. 루프 연구에 대한 제안 사항이 있습니까?

답변1

이것은 cat쓸모없는 CPU 낭비이므로 제거하십시오. 출력을 임시 파일로 보낸 다음 파일 이름을 다시 바꿉니다.

tr x y < input > input.tmp && mv input.tmp input

일단 설치되면 moreutils다음과 같이 수행할 수 있습니다 sponge(임시 파일을 뒤에서 처리).

tr x y < input | sponge input

이러한 이름 변경으로 인해 이제 완전히 링크가 해제된 원본 파일 input에 설정된 멋진 ACL이나 보안 컨텍스트가 손상될 수 있습니다.

관련 정보