Bash : 특정 파일이 포함 된 첫 번째 디렉토리의 이름을 표시하는 방법

StackOverflow https://stackoverflow.com//questions/24053725

  •  21-12-2019
  •  | 
  •  

문제

나는 이것을 가지고있다 :

ls */file
dir1/file dir2/file dir3/file
.

그러나 다음과 같이 첫 번째 디렉토리 이름 만 필요합니다. dir1

나는 이것을했다 :

IFS="/" read foo bar <<< "$(ls */file 2>/dev/null)"
echo $foo
dir1
.

및 IT는 작동하지만 이제는 subshell를 통해 ssh 확장에 문제가 있습니다.이를 수행하기 위해 더 우아한 방법 (subshells 또는 sed 없음)이 있습니까?

그렇지 않은 경우, 완전히 다른 문제에 관한 질문을 게시합니다. - subshells를 통해 ssh 확장.

도움이 되었습니까?

해결책

for F in */file; do
    D=${F%%/*}
    break
done
.

다른 것 :

F=(*/file); D=${F%%/*}
.

다른 팁

시도

ls */file | cut -d"/" -f1
.

세퍼레이터로 /를 사용하십시오.

까다로운 큰 따옴표를 사용할 수 있습니다! 그렇게 그렇게 :

LIST=`ls */file`
echo "$LIST" | cut -d/ -f1
.

또는

echo "$LIST" | awk -F/ {'print $1'}
.

-d 옵션을 사용하여 내장 읽기 게시판을 사용할 수 있습니다.

read -d '/' a < <(echo */file)
echo "$a"
dir1
.

사용할 수있는 폴더의 이름이 필요하면 다음을 수행하십시오.

$ls -1 | awk 'NR==n'
.

여기서 n=1가 첫 번째 디렉토리 인 경우 n 값을 변경하여 n 번째 디렉토리를 가져올 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top