이것은 아마도 매우 간단한 질문이라는 것을 알고 있지만 저는 여전히 명령줄을 처음 접하고 기본 명령만 마스터했습니다.
제가 다니던 대학교에서 강의 프리젠테이션 몇 개(약 25개 정도)를 다운받았는데, 이름이...
L2%20Development%20of%20immune%20system.pptx
L4%20Molecular%20Recognition.pdf
보시다시피 %20
공백 대신 URL 인코딩을 사용하여 다운로드됩니다.
%20
내 질문은 이러한 모든 파일의 이름을 일괄적으로 변경하여 제거하고 공백으로 바꾸는 방법입니다 .
답변1
rename
Debian 및 그 파생 제품(Ubuntu 포함)에서는 각 파일 이름에 Perl 표현식을 적용하는 를 사용할 수 있습니다 .
rename 's/%20/ /g' L*
| | | | |
| | | | +--- Files to match
| | | +------- globally
| | +--------- with space
| +------------ %20
+--------------- Substitute
공백 대신 밑줄을 사용하는 것을 고려해 보겠습니다. 일반적으로 cli 세계에서 생활이 더 쉬워지기 때문입니다.
모든 URI 인코딩에 일반화됨:
rename 'use URI::Escape; $_ = uri_unescape $_' *%*
답변2
당신이 deurlname
사용할 수있는도구 이름 바꾸기.
$ ls
L4%20Molecular%20Recognition.pdf
$ deurlname L4%20Molecular%20Recognition.pdf
$ ls
L4 Molecular Recognition.pdf
나는 썼다대본편집기에서 파일 이름을 바꿀 수 있습니다.
파일 이름을 스크립트에 전달하면 해당 파일 이름이 포함된 편집기가 열립니다. 그런 다음 파일 이름을 편집하고 편집기를 작성한 후 닫습니다.
$ ls
L4%20Molecular%20Recognition.pdf
$ viname L4%20Molecular%20Recognition.pdf
======================
L4%20Molecular%20Recognition.pdf█
======================
======================
L4-Molecular-Recognition.pdf█
======================
(pretend this is an editor)
$ ls
L4-Molecular-Recognition.pdf
나도 썼다대본 내가 선호하는 명명 체계와 일치하도록 파일 이름을 자동으로 바꿉니다. 파일을 다운로드할 때 가장 먼저 하는 일은 해당 파일에 대해 이 스크립트를 호출하는 것입니다.
$ ls
L4%20Molecular%20Recognition.pdf
$ nf L4%20Molecular%20Recognition.pdf
'L4%20Molecular%20Recognition.pdf' renamed to 'l4-molecular-recognition.pdf'
$ ls
L4-molecular-recognition.pdf
해당 스크립트를 조심하세요. 꽤 극적인 이름 변경이 가능합니다. nf -n
파일 이름을 바꾸기 전에 테스트 실행( ) 옵션을 사용하세요.
답변3
convmv
다음을 사용할 수 있습니다: 파일이 포함된 디렉토리에서:
출력이 무엇인지 테스트하려면:
convmv --unescape *%20*
실제로 파일 이름을 바꾸려면 다음을 추가하십시오 --notest
.
convmv --unescape --notest *%20*