리눅스에서 문자열의 일부를 얻는 방법

리눅스에서 문자열의 일부를 얻는 방법

find 명령의 출력은 다음과 같습니다.

/home/user/test/folder1/abc.png

이제 나는 얻고 싶다

폴더 1

위의 문자열에서

답변1

경로 왼쪽의 고정 위치 또는 오른쪽의 고정 깊이를 기준으로 경로의 해당 부분을 찾고 계십니까? 왼쪽에서 보는 경우 다음과 같이 필드 구분 기호로 "/"를 사용하고 네 번째 필드를 잡아서 cut을 사용하여 쉽게 이 작업을 수행할 수 있습니다.

find ... | cut -d/ -f4

답변2

path=/home/user/test/folder1/abc.def
folder=$(basename $(dirname $path))

또는 find 출력에 대해 작업하려는 경우(예: 여러 경로, 한 줄에 하나씩)

find ... | awk -F/ '{print $(NF-1)}'
find ... | sed 's#.*/\([^/]*\)/[^/]*$#\1#'

답변3

나는 awk를 사용할 것이다.

그것은 다음과 같습니다:

find /home -name "abc.png" | awk -F"/" '{print $5}'

답변4

내 시도는 다음과 같습니다.

find . -name abc.png -exec dirname {} \; |grep -o '[^/]*$'

관련 정보