wget이 로그를 추가 할 파일 이름을 생성하는 PHP 코드가 있습니다. 2000 + 파일을 생성했지만 문제는 PHP_EOL
이름의 일부로 실수를했기 때문에 작업하는 데 문제가 있다는 것입니다 . 해당 코드는 LF/line feed/%0A
이름에 추가
됩니다.
같은 파일 이름의 예 (브라우저를 통해 액세스 할 때의 / var / www /에서 html로 둘 때) http://xxxx/wget_01_a%0a.txt
통지를 %0a
확장 이름 앞에
나는 엉망이되어 모든 파일을 검색하는 이름 바꾸기 배치가 line feed
있기를 원하며 줄 바꿈없이 이름을 바꾸면 찾을 수 있습니다.http://xxxx/wget_01_a.txt
내가 ls
원치 않는 문자로 제한되지 않는 모든 특수 문자가 퍼티에 있을 때처럼 보이는 것처럼 보이기 때문에 이것을 처리하는 방법을 잘 모르겠습니다 ?
.
답변
rename
CentOS 6이 제공하는 util-linux 의 유틸리티 사용 및 bash 가정 :
rename $'\n' '' wget_*
나열된 파일 이름에서 개행 문자를 삭제하도록 요청합니다. 작은 하위 집합에서 시도하여 원하는 작업을 수행하는 것이 좋습니다 ( rename
CentOS 7 -v
에서는 변경 내용을 보여주는 스위치를 지원합니다 ).
대신 Perl 기반을 제공하는 배포판을 사용하는 경우 rename
:
rename -n 's/\n//g' wget_*
그런 다음 -n
실제로 이름 바꾸기를 수행 하지 않고 실행하십시오.
답변
이미 답변 한 내용을 바탕으로 find 명령을 rename과 결합하여 현재 폴더와 하위 폴더에 줄 바꿈이 포함 된 모든 파일의 이름을 바꾸도록 일반화했습니다.
find -name $'*\n*' -exec rename $'s|\n| |g' '{}' \;
여기서 find 명령은 줄 바꿈을 포함하는 모든 파일을 찾고 이름 바꾸기 명령은 이름의 모든 줄 바꿈을 공백으로 바꿉니다.
캐리지 리턴 (\ r)과 같은 문제가있는 다른 문자에 대해서도 동일하게 수행 할 수 있습니다.