폴더의 파일 반복

폴더의 파일 반복

파일이 포함된 폴더가 있고 이전과 동일한 이름을 출력하는 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 또는 보안 컨텍스트가 파괴될 수 있습니다.

관련 정보