파일 이름에서 문자열 제거/삭제

파일 이름에서 문자열 제거/삭제

www.thethinkfoundation.org다음과 같이 줄로 끝나는 텍스트 파일이 많이 있습니다 .

file1.www.thethinkfoundation.org.txt
file2.www.thethinkfoundation.org.txt
.
.
.

file100.www.thethinkfoundation.org.txt

제거/삭제하고 싶어요www.thethinkfoundation.org

이를 달성하기 위해 터미널에서 다음 명령을 시도했습니다.

for f in www.thethinkfoundation.org*; do mv "$f" "${f#thethinkfoundation.org}"; done

결과는 다음과 같습니다.

file1..txt
file2..txt
.
.
.

file100..txt

작동하는 솔루션에 대해 미리 감사드립니다.

추신: 나는 이 명령을 사용하고 싶지 않습니다 rename. 저는 실제로 Linux 및 *BSD 배포판에서 작동하는 것을 찾고 있습니다. 내가 선호하는 텍스트 편집기는 nano.

답변1

다음을 기반으로 하는 하위 문자열 교체쉘 매개변수 확장in bash및 몇 가지 다른 쉘도 두 가지 방법으로 얻을 수 있습니다.

첫 번째, 교체할 수 있습니다첫 번째 발생만(왼쪽에서 오른쪽으로) 다음과 같은 패턴입니다.

${var/pattern/replacement}

두번째, 교체할 수 있습니다모든 발생다음과 같은 패턴입니다.

${var//pattern/replacement}

var문자열을 포함하는 변수/매개변수는 어디에 있고 pattern해당 문자열에서 찾아 바꾸려는 패턴이며 비워 둘 수 replacement있는 대체 항목입니다. pattern즉, ${var//pattern/}해당 패턴만 삭제하려는 경우 문자열에서.

따라서 원하는 솔루션은 다음과 같습니다.

for f in *www.thethinkfoundation.org*; do
    echo mv -n -- "$f" "${f//www.thethinkfoundation.org./}"
done

먼저 테스트한 후 꺼내서 다시 실행하여 실제 작업을 수행할 echo수 있도록 테스트 실행을 추가했습니다 .echo

관련 정보