로 -I
, xargs
없이 (공백 또는 구분 된 줄 바꿈 가능성 인용) 단어 당 하나 개의 인수의 기본에 반대 한 줄에 하나의 인수를 얻는다 -I
(그리고 의미 -n
). 따라서 귀하의 예제 에서는 마지막 줄 바꿈을 뺀 전체 출력 (한 줄에 있음) date
으로 {}
확장되어 한 번만 호출됩니다 echo
.
여기서 할 수 있습니다 ( -d
GNU 확장명입니다).
printf '%s\n' {1..12}/01 | xargs -I {} date -d {} +%b | xargs mkdir --
(월 이름 약어에 공백이나 따옴표가 포함 된 로케일에서는 제대로 작동하지 않습니다. GNU xargs
에서는을 사용하여 해결할 수 있습니다. xargs -d '\n' mkdir --
)
이제 로케일에서 월 약어 목록을 얻으려면 로케일을 직접 쿼리하는 것이 더 합리적입니다.
(IFS=';'; set -o noglob; mkdir -- $(locale abmon))
(참고 locale -k LC_TIME
모든 로케일 데이터를 볼 LC_TIME
카테고리).
또는 기본적으로 zsh
:
zmodload zsh/langinfo
mkdir -- ${(v)langinfo[(I)ABMON_*]}
적어도 GNU 시스템, 일부 로켈에서는 월 약어가 공백을 사용하여 고정 너비로 채워집니다.
$ LC_ALL=et_EE.UTF-8 locale title abmon
Estonian locale for Estonia
jaan ;veebr;märts;apr ;mai ;juuni;juuli;aug ;sept ;okt ;nov ;dets
$ LC_ALL=zh_TW.UTF-8 locale title abmon
Chinese locale for Taiwan R.O.C.
1月; 2月; 3月; 4月; 5月; 6月; 7月; 8月; 9月;10月;11月;12月
해당 패딩을 제거 할 수 있습니다.
선행 공백은에 의해 제거 xargs -I
되지만 후행 공백은 제거 되지 않습니다. 로 zsh
:
zmodload zsh/langinfo
set -o extendedglob
mkdir -- ${${${(v)langinfo[(I)ABMON*]}##[[:space:]]#}%%[[:space:]]#}