10K 텍스트 파일이 포함된 폴더가 있다고 가정해 보겠습니다. 모두 삭제하고 싶어요공간, 상표그리고선을 넘어각 파일에서.
이 작업을 어떻게 효율적으로 수행할 수 있습니까?
답변1
당신은 그것을 사용할 수 있습니다 tr
:
LC_ALL=C tr -d '[:blank:]\n' < file_in > file_out
10,000개의 파일을 처리해야 하는 경우 더 나은 솔루션은 다음과 같습니다.
find . -type f -exec perl -i.bak -pe 's/ |\t|\n//g' {} +
답변2
GNU를 사용할 수 있습니다 sed
.
$ shopt -s dotglob # includes "hidden" files beginning with .
$ sed -i.bak ':a;N;$!ba;s/[\n \t]//g' *
그러면 폴더의 모든 파일이 처리됩니다. 확장자를 사용하여 원본 파일의 백업을 저장합니다 .bak
. 백업하지 않으려면 -i
..bak
이렇게 하려면 다음을 반복적으로 사용하세요.
sed -i.bak ':a;N;$!ba;s/[\n \t]//g' $(find . -type f)
답변3
파일 내용을 처리하는 속도로 판단하면 tr
정규식 솔루션보다 빠르거나 유사한 것 같습니다.perl
sed
tr
1만 개가 넘는 파일을 반복하는 경우 프로세스가 로 처리되기 때문에 할 수 있는 일이 많지 않으므로 stdin
무엇을 하든 stdout
10,000번을 생성하게 됩니다. 이것은 tr
이것을 할 수 있는 find . -maxdepth -exec
좋은 방법입니다 .