Dengan -I
, xargs
dapatkan satu argumen per baris sebagai lawan dari default satu argumen per (kosong atau baris baru dibatasi, mungkin dikutip) kata tanpa -I
(dan menyiratkan -n
). Jadi, dalam contoh Anda date
dipanggil hanya sekali dengan {}
diperluas ke seluruh output echo
(yang ada di satu baris), minus baris baru.
Di sini Anda dapat melakukannya (perhatikan bahwa itu -d
adalah ekstensi GNU):
printf '%s\n' {1..12}/01 | xargs -I {} date -d {} +%b | xargs mkdir --
(perhatikan bahwa itu tidak akan berfungsi dengan benar di lokal di mana singkatan nama bulan berisi spasi atau karakter kutipan; dengan GNU xargs
, Anda dapat mengatasinya dengan menggunakan xargs -d '\n' mkdir --
)
Sekarang, untuk mendapatkan daftar singkatan bulan di lokal Anda, menanyakan langsung ke lokal akan lebih masuk akal:
(IFS=';'; set -o noglob; mkdir -- $(locale abmon))
(lihat juga locale -k LC_TIME
untuk melihat semua data lokal dalam LC_TIME
kategori).
Atau secara native di zsh
:
zmodload zsh/langinfo
mkdir -- ${(v)langinfo[(I)ABMON_*]}
Setidaknya pada sistem GNU, di beberapa lokal, singkatan bulan diisi hingga lebar tetap dengan spasi:
$ 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月
Anda mungkin ingin menghapus lapisan itu.
Ruang utama akan dihapus oleh xargs -I
, tetapi bukan yang tertinggal. Dengan zsh
:
zmodload zsh/langinfo
set -o extendedglob
mkdir -- ${${${(v)langinfo[(I)ABMON*]}##[[:space:]]#}%%[[:space:]]#}