\fPerl의 양식 피드 문자입니다. 이 잘못된 파일은 Perl과 XML을 처음 접하는 사람이 만든 것처럼 보입니다.
여기에는 Perlier 수정 사항이 많이 있습니다. sed로 허용되는 답변과 달리 모든 파일의 업데이트를 자동화하는 OP의 목표를 충족합니다 find.
\f16 진수 코드 대신 간단하게 사용할 수 있습니다 x0c.
find . -type f -exec perl -pi.bkp -e 's [ \f ilename ][ /f ilename ]gx' {} \;
여기에 일반 파일 만 반환 -type f하도록 tel find에 추가 했습니다. 그렇지 않으면 목록으로 find돌아가서 .편집하려고 할 때 경고가 트리거되지만 다른 모든 것은 여전히 작동합니다.
또한 x실제 공백을 무시 하는 플래그를 사용하여 정규식을 쉽게 볼 수 있도록하여 정규식의 요소를 간격을 둘 수 있습니다. 당신이 이것을 좋아하지 않으면, 여기없는 것입니다 :
find . -type f -exec perl -pi.bkp -e 's[\filename][/filename]g' {} \;
그리고 모든 폼 피드 문자가 의심스럽고 모두로 교체해야 /f할 경우 한 줄짜리를 더 얇게 만들 수 있습니다.
find . -type f -exec perl -pi.bkp -e 's[\f][/f]g' {} \;
s///Perl에서 정규식 대체 명령 요소 ( ) 를 둘러싸 기 위해 슬래시를 사용할 필요는 없습니다 . 모든 기호를 사용할 수 있습니다. 그러나 어떤 종류의 대괄호와 같은 기호를 사용하기로 선택한 경우에는 두 가지를 모두 사용해야 s[old][new]합니다.
슬래시를 사용하지 않으므로 슬래시를 벗어날 필요가 없습니다.
as -i.bkp: : perl -pi -e당신은 그 자리에서 편집 할 수 있습니다-그러나 찾기 및 바꾸기 Perl 프로그램이 잘못되었을 때 추가 보험을 원한다면 파일 확장자를 넣어 원본 파일의 사본을 만들 수 있습니다 당신. 여기에을 사용했습니다 .bkp.
최신 버전의 Perl에서 시스템의 전원 손실 또는 디스크 공간 부족과 같은 심각한 문제가 발생할 경우 내부 편집 기능이보다 탄력적으로 업데이트되었습니다. 최근 Perls의 향상된 내부 편집 기능에 대한 Perl 작성자 brian d foy가 있습니다.
이러한 종류의 작업에 Perl을 사용하는 것을 고려해야합니다. 이는 매우 강력하지만 과소 평가 된 범용 프로그래밍 언어이기 때문에 원래의 디자인 목표는 대체 sed하고 awk훨씬 더 나은 것으로 설계되었습니다 .
펄 5의 정규식 매칭 기능과 개선 된 정규식 구문은 지금까지의 그 초과 sed, awk펄 간단하고 고급 정규식 조작 모두를위한 가장 현명한 선택하게 떨어져 펄 6에서, 실제로 다른 모든 프로그래밍 언어를.
명확히하기 위해 : sed제대로 작동 find하고 sed -i.bkp편집 한 각 파일의 백업을 만드는 데 사용할 수도 있지만, 내가 아는 한 Perl 5.28 이상의 추가 복원력은 없습니다. 또한 복잡하고 훨씬 덜 강력한 기존 UNIX ® 정규식 구문을 사용합니다.
<\filename>대신에 누군가가 사용한 것 같습니다 . 이러한 파일의 소스를 추적하고 생성 도구의 문제점을 개발자에게 지적해야합니다. 파일을 수정하기 위해 허용되는 대답은 괜찮습니다.</filename>\f