ls -1
한 줄로 결과를 결합하고 원하는대로 구분하고 싶습니다.
이것을 달성하기 위해 사용할 수있는 표준 Linux 명령이 있습니까?
답변
첫 번째 옵션과 비슷하지만 후행 구분 기호를 생략합니다.
ls -1 | paste -sd "," -
답변
편집 : 단순히 ” ls -m “구분자를 쉼표로 사용하려면
아, 힘과 단순성!
ls -1 | tr '\n' ','
“쉼표를 변경 , 당신이 원하는대로에”. 여기에는 “후행 쉼표”가 포함됩니다.
답변
마지막 쉼표를 개행 문자로 바꿉니다.
ls -1 | tr '\n' ',' | sed 's/,$/\n/'
ls -m
화면 너비 문자에 개행 문자를 포함합니다 (예 : 80 번째 문자).
대부분 배쉬 ( ls
외부 만 ) :
saveIFS=$IFS; IFS=$'\n'
files=($(ls -1))
IFS=,
list=${files[*]}
IFS=$saveIFS
Bash 4에서 readarray
(aka mapfile
) 사용
readarray -t files < <(ls -1)
saveIFS=$IFS
IFS=,
list=${files[*]}
IFS=$saveIFS
제안에 대해 gniourf_gniourf에게 감사합니다.
답변
이건 대단해
ls -1 | awk 'ORS=","'
ORS는 “출력 레코드 구분 기호”이므로 이제 행이 쉼표로 결합됩니다.
답변
설정 IFS
과 사용의 조합은 "$*"
원하는 것을 할 수 있습니다. 서브 쉘을 사용하고 있으므로이 쉘의 $ IFS를 방해하지 않습니다
(set -- *; IFS=,; echo "$*")
출력을 캡처하려면
output=$(set -- *; IFS=,; echo "$*")
답변
ls
일반적으로 구문 분석 은 권장되지 않으므로 다음 과 같이 더 나은 대안을 사용하는 것이 좋습니다find
.
find . -type f -print0 | tr '\0' ','
또는 find
and 를 사용 하여 paste
:
find . -type f | paste -d, -s
파일 시스템과 관련이없는 여러 줄을 일반적으로 결합 하려면 Unix 명령 줄에서 간결하고 이식 가능한“결합”을 확인하십시오 .
답변
바퀴를 재발 명하지 마십시오.
ls -m
정확히 그렇습니다.