sh 스크립트에서 변수를 파일의 기본 이름의 마지막 3 자로 설정하려고합니다 (기본 이름은 경로 가 없고 접미사가 없음을 의미 합니다). 나는 이것을하는 데 성공했지만 순전히 호기심에서 사용할 수있는 더 짧은 단일 명령이 있는지 궁금합니다. 원래와 함께 하나의 라이너가 awk
있었지만 다소 길었습니다. 현재이 두 줄 스크립트가 있습니다 (완전한 파일 이름이 있다고 가정 $1
).
filebase=`basename "$1"`
lastpart=`echo -n ${filebase%.*} | tail -c3`
예를 들어 "/path/to/somefile.txt" 는에서 "ile" 로 끝납니다 $lastpart
.
어떻게 든 basename
접미사를 단일 명령으로 묶기 위해 비트와 비트를 결합 할 수 있습니까 tail
? 파이프를 사용하지 않고 접미사를 보내 거나 사용할 수 있는 방법이 있습니까? 접미사를 알 수 없으므로에 매개 변수로 사용할 수 없습니다 basename
.
주요 목표는 실제로 가능한 한 짧게 읽을 수있을 정도로 짧지는 않습니다. 이 모든 실제 상황은 수퍼 유저에 대한이 질문입니다 . 여기서 나는 간단한 대답을 제시하려고합니다.
two
이 작동합니다. 그 확장은 .three
내가 추측 할 것 입니다.
file.one.two.three
겠습니까? 당신이 원하는 것ile
또는two
?