컴파일러 플래그를 제거하여 파일 이름 바꾸기

컴파일러 플래그를 제거하여 파일 이름 바꾸기

주어진

  1. 디렉토리 목록, 예:dirs="Larry Curly Moe"
  2. 컴파일러 공급업체(예: -gcc-MN0)

목표는 모든 디렉토리를 스캔하고 다음과 같이 모든 파일 이름을 자르는 것입니다.

intel-mkl/2018.1.163-gcc-7.1.0             -> intel-mkl/2018.1.163
exuberant-ctags/5.8-gcc-7.1.0              -> exuberant-ctags/5.8
superlu-dist/[email protected] -> superlu-dist/5.2.2

효과적이고 강력한 전략이란 무엇입니까?

답변1

이것은 당신에게 도움이 될 수 있습니다:

샘플 파일 세트로 시작하세요.

$ find . -type f -name '*-gcc-*'
./intel-mkl/2018.1.163-gcc-7.1.0
./superlu-dist/[email protected]
./exuberant-ctags/5.8-gcc-7.1.0

다음은 파일 이름 끝에서 -gcc-*를 제거하는 스크립트입니다.

$ cat ex.sh
#!/bin/bash
for i in $(find . -type f -name '*-gcc-*'); do
    mv "$i" "$(echo "$i" | sed -e 's/-gcc-.*$//')"
done

스크립트를 실행합니다:

$ bash ex.sh

이 파일에는 더 이상 -gcc-* 접미사가 포함되어 있지 않습니다.

$ find . -type f
./intel-mkl/2018.1.163
./superlu-dist/5.2.2
./exuberant-ctags/5.8

답변2

find+bash해결책:

find . -type f -name "*-gcc-[0-9]*" -exec bash -c 'fn=${1%-gcc-*}; mv "$1" "$fn"' _ {} \;

관련 정보