파일 확장자에서 쿼리 매개변수를 제거하는 방법은 무엇입니까? [복사]

파일 확장자에서 쿼리 매개변수를 제거하는 방법은 무엇입니까? [복사]

파일 확장자에서 쿼리 매개변수를 제거하는 방법

아래와 같이 260,000개의 이미지 파일을 다운로드했습니다.

filename.jpg?
filename2.jpg?
filename3.jpg?

파일 확장자에서 문제가 있는 "?"의 이름을 쉽게 바꾸거나 제거하려면 어떻게 해야 합니까?

다양한 osx 패키지를 사용해 보았습니다.

Finder
A better Finder Rename 11
Name Mangler
Renamer
vRenamer

...하지만 그들 중 누구도 그 일을 할 수 없어요

-most packages cannot seem to access the '?' in the file exenstion

-Name Mangler can suucesfuly append and extra ".jpg" to file, giving me filename3.jpg?.jpg 
i could work with this, but it also can only do 5000 files at a time, which means 50 batches :-/

효율적인 터미널 명령이 필요합니다. 팁을 주시면 감사하겠습니다!

감사해요

매튜

답변1

당신은 그것을 사용할 수 있습니다매개변수 확장그리고 bash.

아래 스크립트는 ?파일 이름의 모든 내용을 제거하므로 파일 이름이 있는 경우 다음 file?name.jpg?으로 대체됩니다 filename.jpg.

#!/bin/bash

for file in ./*; do
   mv "file" "${file//\?/}"
done

또는 한 줄의 스크립트:

for file in ./*; do mv "$file" "${file//\?/}" ; done

마지막 문자(예: )만 제거하려면 ?다음을 사용할 수 있습니다.

#!/bin/bash

for file in ./*; do 
mv "$file" "${file%?}" 
done

또는 한 줄의 스크립트:

for file in ./*; do mv "$file" "${file%?}" ; done

노트:파일이 있는 디렉토리에 위치해야 합니다. 그렇지 for file in ./*않으면 for file in /path/to/your_working_directory/*.


이름 바꾸기 사용

명령을 사용하여 파일 이름을 쉽게 바꿀 수 있습니다 rename. macOS에서는 설치가 불가능할 수 있으므로 다음을 설치해야 합니다.

brew install rename

이 명령이 macOS에서 작동하는지 잘 모르겠습니다. 나는 Linux에서 테스트했는데 file-rename내가 아는 한 둘 다 동일합니다. 제가 틀렸다면 지금 말씀해주세요.

?이 스크립트는 각 파일 이름 끝에 있는:을 제거합니다 .

rename 's/\?$//' *
#or
rename 's/\?$//' /path/to/your_working_directory/* 

그러면 모든 ?파일 이름이 제거됩니다.

rename 's/\?//g' *
#or
rename 's/\?//g' /path/to/your_working_directory/* 

관련 정보