![각 파일 이름에서 서로 다르지만 동일한 위치에 있는 중간 4자를 제거하여 여러 파일의 이름을 바꾸려면 어떻게 해야 합니까? [복사]](https://linux55.com/image/197943/%EA%B0%81%20%ED%8C%8C%EC%9D%BC%20%EC%9D%B4%EB%A6%84%EC%97%90%EC%84%9C%20%EC%84%9C%EB%A1%9C%20%EB%8B%A4%EB%A5%B4%EC%A7%80%EB%A7%8C%20%EB%8F%99%EC%9D%BC%ED%95%9C%20%EC%9C%84%EC%B9%98%EC%97%90%20%EC%9E%88%EB%8A%94%20%EC%A4%91%EA%B0%84%204%EC%9E%90%EB%A5%BC%20%EC%A0%9C%EA%B1%B0%ED%95%98%EC%97%AC%20%EC%97%AC%EB%9F%AC%20%ED%8C%8C%EC%9D%BC%EC%9D%98%20%EC%9D%B4%EB%A6%84%EC%9D%84%20%EB%B0%94%EA%BE%B8%EB%A0%A4%EB%A9%B4%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%ED%95%B4%EC%95%BC%20%ED%95%A9%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
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
이를 제거하여 실제로 명령을 실행하세요.