다음과 같은 결과 가 나오면 echo *
:
file1 file2 file3 ...
내가 원하는 것은 첫 번째 단어를 선택하는 것입니다. 어떻게 진행하나요?
답변1
awk를 통해 파이프하고 첫 번째 단어를 에코하도록 할 수 있습니다.
echo * | head -n1 | awk '{print $1;}'
또는 문자열을 자르고 첫 번째 단어를 선택합니다.
echo * | head -n1 | cut -d " " -f1
또는 sed를 통해 파이프하여 첫 번째 단어를 제외한 모든 항목을 제거하도록 합니다.
echo * | head -n1 | sed -e 's/\s.*$//'
까다로운 분들을 만족시키기 위해 추가되었습니다 | head -n1
. 문자열에 개행 문자가 포함되어 있으면 | head -n1
중요한 명령이 전달된 문자열의 첫 번째 단어를 선택하기 전에 첫 번째 줄이 선택됩니다.
답변2
posixy 쉘이 있다고 가정합니다( /bin/sh
또는 /bin/bash
이를 수행할 수 있음).
all=$(echo *)
first=${all%% *}
이 구성 ${all%% *}
은 예시입니다.하위 문자열 삭제. 이 방법은 %%
변수의 오른쪽 끝에서 가장 긴 일치 항목(공백 뒤에 아무 것도 없음)을 제거합니다. 문자열 조작에 대해 자세히 읽을 수 있습니다.*
all
여기.
이 솔루션에서는 구분 기호가 공백이라고 가정합니다. 파일 이름으로 이 작업을 수행하면 공백이 있는 모든 파일이 깨집니다.
답변3
당신이 정말로 첫 번째 것을 원한다고 가정하면파일 이름그리고 처음은 아니지단어, 공백으로 인해 중단되지 않는 방법은 다음과 같습니다.
shopt -s nullglob
files=(*)
printf '%s\n' "${files[0]}"