패턴을 사용하여 파일 그룹 이름 바꾸기.1.gz.html ~.html

패턴을 사용하여 파일 그룹 이름 바꾸기.1.gz.html ~.html

나는 명령을 사용해 보았습니다 :

mv *.1.gz.html *.html

그러나 나는 다음과 같은 응답을 받았습니다.

<filename>은 디렉토리가 아닙니다.

어떻게 작동하게 할 수 있나요? 또한 rename 명령을 시도했지만 작동하지 못했습니다. 저에게는 정규 표현식이 너무 많습니다.

내가 더 잘 이해했다면 xargs를 사용하는 것이 효과가 있을 것이라고 생각합니다.

답변1

mv단일 파일의 이름을 바꾸거나 여러 파일을 단일 디렉터리로 이동합니다.

많은 파일의 이름을 바꾸려면 rename.

버전에 따라 rename:

 rename .1.gz.html .html *.1.gz.html

또는

 rename 's/\.1\.gz\.html/\.html/' *.1.gz.html

첫 번째 버전은 작성하기가 좀 더 쉽고, 두 번째 버전은 더 강력하며 때로는 올바른 구문을 찾기 위해 perl-rename.man rename

답변2

이와 같은 와일드카드는 일치하는 모든 항목으로 확장됩니다.앞으로명령 mv도 실행됩니다. 더 나쁜 것은 파일과도 *.html일치한다는 것입니다.*.1.gz.html

이는 (예를 들어 abc.1.gz.html및 라는 이름의 두 파일 def.1.gz.html) 위 명령이 기본적으로 실행 중임을 의미합니다.

mv abc.1.gz.html def.1.gz.html abc.1.gz.html def.1.gz.html

그러면 및 을(를 ) 이름의 디렉토리 abc.1.gz.html로 이동하려고 시도합니다 . 다행히 파일이 디렉터리가 아니기 때문에 이 작업은 실패합니다.def.1.gz.htmldef.1.gz.html

각 파일을 한 번에 보려면 몇 가지 스크립트를 작성해야 합니다. 예를 들면 다음과 같습니다.

for file in *.1.gz.html; do
  mv "$file" "`echo $file | sed 's/\.gz\.html$/.html/'`"
done

관련 정보