Bash를 사용하여 중간에 있는 4자를 제거하여 파일 이름을 바꾸고 싶습니다.
원본 파일 이름:
dwe_hiul123456.pdf
dwe_lkyd345876.pdf
dwe_ythn157843.pdf
중간에 있는 4자를 제거하여 새 파일 이름을 다음과 같이 만들고 싶습니다.
dwe_123456.pdf
dwe_345876.pdf
dwe_157843.pdf
4개의 문자는 항상 뒤에 오고 파일 이름에는 _
항상 1개의 문자가 있습니다 . _
모든 파일 이름의 길이는 동일하며 제거하려는 4개의 문자가 같은 위치에 있습니다.
저는 이 기능을 처음 접했고 Windows 10을 사용하는 것 외에 어떤 버전을 사용하고 있는지 모릅니다. Git Bash 명령 창을 통해 이 작업을 수행하려고 했습니다.
답변1
Perl-rename이 있는 경우( rename
Debian 기반 시스템이나 perl-rename
기타 시스템에서 사용 가능) 다음을 수행할 수 있습니다.
$ rename -n 's/_..../_/' *pdf
dwe_hiul123456.pdf -> dwe_123456.pdf
dwe_lkyd345876.pdf -> dwe_345876.pdf
dwe_ythn157843.pdf -> dwe_157843.pdf
변경하지 않고 수행할 작업만 인쇄하는 원인 -n
입니다 . rename
원하는 대로 작동하는지 확인한 후에는 제거 -n
하고 명령을 다시 실행하여 실제로 파일 이름을 바꿉니다.
rename 's/_..../_/' *pdf
어떤 이유로 든 사용할 수 없는 경우 rename
간단한 쉘 루프를 사용하여 사용할 수도 있습니다.
for file in *pdf; do
echo mv -- "$file" "${file/_????/_}"
done
다시 한 번, 원하는 대로 작동한다고 확신한다면 를 제거하여 echo
실제로 명령 이름을 바꾸세요.
for file in *pdf; do
mv -- "$file" "${file/_????/_}"
done
답변2
사용매개변수 확장:
$ for i in *.pdf; do
echo mv -- "$i" "${i/_[a-z][a-z][a-z][a-z]/_}"
# actual `mv` command
# mv -- "$i" "${i/_[a-z][a-z][a-z][a-z]/_}"
done
mv -- dwe_hiul123456.pdf dwe_123456.pdf
mv -- dwe_lkyd345876.pdf dwe_345876.pdf
mv -- dwe_ythn157843.pdf dwe_157843.pdf
결과 가 만족스러우면 echo
이를 제거하여 실제로 명령을 수행하십시오.