더 적은 키 입력으로 여러 파일 이름을 입력하는 방법

더 적은 키 입력으로 여러 파일 이름을 입력하는 방법

imagemagick을 사용하여 이미지를 이미지 pdf로 변환하려면 다음을 수행합니다.png

convert -trim -density 400 this_is_a_very_long_filename_of_my_pdf_file.pdf this_is_a_very_long_filename_of_my_pdf_file.png

png어떤 이유로 PDF 파일은 일반적으로 긴 파일 이름을 가지며 파일의 확장자를 제외하고 동일한 이름을 갖기를 원합니다 .

일반적으로 this_is_a_very_long_filename_of_my_pdf_file.pdf탭 선택을 두 번 수행한 zsh-menu다음 두 번째 매개변수를 수동으로 pdf변경합니다 .png

하지만 이 작업을 수행하는 더 빠른 방법이 있습니까?

답변1

당신은 그것을 사용할 수 있습니다버팀대 확장:

convert -trim -density 400 this_is_a_very_long_filename_of_my_pdf_file.{pdf,png}

답변2

mogrify를 호출하면 pdf를 덮어쓰는 대신 새 png 파일이 생성됩니다. 바라건대;)

mogrify -trim density 400 -format png th*.pdf

th*.pdf의 경우 적절한 수의 문자를 사용하여 올바른 파일을 선택하거나 전체 이름을 얻을 때까지 탭 완성을 수행하는 것이 더 좋습니다.

이렇게 하면 png 매개변수까지 전체 명령에 대한 별칭을 만들 수 있습니다.

답변3

항상 동일한 명령을 사용하지만 약간의 변경(예: 파일 이름)을 적용한 경우 다음과 같이 함수를 작성할 수 있습니다.

pdf2png() { convert -trim -density 400 "$1" "$1:r.png" }

(이 함수는 에만 적용됩니다 zsh.) 변환하려는 각 파일 your_file.pdf에 대해 다음을 수행합니다.

pdf2png your_file.pdf

참고 1: 다른 쉘에도 동일한 유형의 함수를 작성할 수 있지만 약간 복잡합니다.

zsh참고 2: 의 경우 따옴표는 이 옵션이 설정된 경우에만 유용합니다 (기본값은 아님) .SH_WORD_SPLIT

답변4

당신은 또한 사용할 수 있습니다역사적 확장현재 명령줄의 단어 인용:

convert -trim -density 400 this_is_a_very_long_filename_of_my_pdf_file.pdf !#:$:r.png
  • 이벤트 표시기 !#지금까지 입력한 명령줄을 참조합니다.
  • 단어 표시기 $마지막 단어를 나타냅니다(확장 전).
  • 수정자 r파일 확장자를 제거합니다. 이는 또한 역사적 확장이 발생할 때 대체될 텍스트의 끝을 표시합니다.
  • .png새로운 확장입니다. 이는 확장 자체의 일부가 아닙니다.

이 줄이 실행되면 !#:$:r확장자를 뺀 pdf 파일 이름으로 대체되어 질문에 따라 명령이 생성됩니다.

convert -trim -density 400 this_is_a_very_long_filename_of_my_pdf_file.pdf this_is_a_very_long_filename_of_my_pdf_file.png

그런 다음 이 줄을 직접 실행하세요.

히스토리 확장 후 명령을 확인하려면 실행하기 전에 다음을 사용하십시오.

setopt histverify

그러면 확장된 행이 실행되는 대신 편집 버퍼로 다시 로드됩니다.

참고: 다른 확장과 달리 히스토리 확장은 명령이 히스토리에 저장되기 전에 실행됩니다. 따라서 귀하 대신 echo !#으로 표시됩니다 .echo echoecho !#$HISTFILE

관련 정보