Bash : 특정 파일이 포함 된 첫 번째 디렉토리의 이름을 표시하는 방법
문제
나는 이것을 가지고있다 :
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 번째 디렉토리를 가져올 수 있습니다.
제휴하지 않습니다 StackOverflow