주어진
- 디렉토리 목록, 예:
dirs="Larry Curly Moe"
- 컴파일러 공급업체(예: -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"' _ {} \;