
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