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
rename
Perl-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
이를 제거하여 실제로 명령을 실행하세요.