![디렉토리에 있는 모든 파일의 파일 이름 하위 집합 이름을 바꾸는 방법은 무엇입니까?](https://linux55.com/image/202919/%EB%94%94%EB%A0%89%ED%86%A0%EB%A6%AC%EC%97%90%20%EC%9E%88%EB%8A%94%20%EB%AA%A8%EB%93%A0%20%ED%8C%8C%EC%9D%BC%EC%9D%98%20%ED%8C%8C%EC%9D%BC%20%EC%9D%B4%EB%A6%84%20%ED%95%98%EC%9C%84%20%EC%A7%91%ED%95%A9%20%EC%9D%B4%EB%A6%84%EC%9D%84%20%EB%B0%94%EA%BE%B8%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
다음과 같은 파일이 있습니다.
test.tar.gz.part00
test.tar.gz.part01
test.tar.gz.part02
…
test.tar.gz.part99
대체되어야 합니다 ..., .gz
데비안이 제공하지 않는 .lz4
종속성을 사용하지 않는 것이 좋습니다(예를 들어).rename
도와주셔서 감사합니다!
답변1
당신은 그것을 사용할 수 있습니다 rename
.
rename gz lz4 ./*part*
아니요 rename
:
for file in ./*part*; do mv "$file" "${file//gz/lz4}"; done
답변2
rename
원래는 perl
80년대의 매우 짧은 샘플 스크립트입니다.
매우 짧으며 어떤 스크립트에도 쉽게 인라인할 수 있습니다.
perl -e 'for (@ARGV) {
$old = $_; rename $old, $_ if s/\.gz(\.part\d+)\Z/\.lz4$1/s
}' -- *.gz.part*
추가적으로 perl
는 bash
일반적으로 Debian GNU/Linux 기반 시스템에서 기본적으로 제공되는 또 다른 언어 해석기입니다(이것이 GNU 쉘이기 때문입니다). 이 셸에서는 다음을 수행할 수 있습니다.
shopt -s extglob nullglob
for file in *.gz.part+([0123456789]); do
mv -T -- "$file" "${file%.*.*}.lz4.${file##*.}"
done
동등한 것으로.