12/05/05 11:39:09.60
>>959
え? お前の環境変だろ。LC_ALL設定してしまってるとか。
961:名無しさん@お腹いっぱい。
12/05/05 12:00:08.94
en_US ロカールが定義されているか、未定義かで変わる?
962:名無しさん@お腹いっぱい。
12/05/05 12:10:33.40
各地域ロケールの内容ってどこかで決まってたりするの? 環境依存だと思ってた。
963:名無しさん@お腹いっぱい。
12/05/05 12:12:56.73
>>959 ではないけどやってみた。OSX Lion。
普段の環境は LC_ALL 未定義、LC_MESSAGES=C、LC_TIME=C、他のLC_xxxは未定義、LANG=ja_JP.UTF-8
$ LC_COLLATE=en_US.UTF-8 zsh -c 'echo ZSH_VERSION=$ZSH_VERSION LC_ALL=$LC_ALL LC_COLLATE=$LC_COLLATE; echo *'
ZSH_VERSION=4.3.11 LC_ALL= LC_COLLATE=en_US.UTF-8
_a _b a b
$ LC_COLLATE=C zsh -c 'echo ZSH_VERSION=$ZSH_VERSION LC_ALL=$LC_ALL LC_COLLATE=$LC_COLLATE; echo *'
ZSH_VERSION=4.3.11 LC_ALL= LC_COLLATE=C
_a _b a b
964:名無しさん@お腹いっぱい。
12/05/05 12:21:42.24
多分、en_US localeをインストールしてない環境ってオチ。それならLC_COLLATE=C と同じになって当然。
965:963
12/05/05 13:42:40.15
うちのzshはここ見てないのかねぇ。
$ ls -l /usr/share/locale/en_US.UTF-8/LC_COLLATE
lrwxr-xr-x 1 root wheel 28 2011-08-02 23:22 /usr/share//locale/en_US.UTF-8/LC_COLLATE -> ../la_LN.US-ASCII/LC_COLLATE
$ ls -l /usr/share/locale/la_LN.US-ASCII/LC_COLLATE
-r--r--r-- 1 root wheel 2086 2011-08-02 23:22 /usr/share/locale/la_LN.US-ASCII/LC_COLLATE
LNってどこだよw
966:963
12/05/05 13:52:07.08
$ strings =zsh | grep strcoll
少なくとも strcoll は呼んでないわー。 libiconvとかはリンクしてるけど。
967:名無しさん@お腹いっぱい。
12/05/05 22:53:05.58
>>960
片方 a _a b _b になるじゃねーか。LC_ALL設定失念しちまった。
なにこれ _a を 1文字として扱ってるの?
>>966
% echo $ZSH_VERSION
4.3.17
% strings =zsh | grep strcoll
strcoll
968:名無しさん@お腹いっぱい。
12/05/06 04:10:16.92
>>967
configure 次第か。
969:名無しさん@お腹いっぱい。
12/05/13 00:17:40.31
以下のように拡張子の前の数字を取り除きたいのですが、zmvでどのように実行をすれば良いでしょうか?
hoge1.mp3 → hoge.mp3 #数字を取り除く
hoge1hoge.mp3 → hoge1hoge.mp3 #そのまま
試行錯誤したのですが、うまく行きません。
以下のように実行すると、"hoge1.mp3"と"hoge1hoge.mp3"を"hoge.mp3"に変換しようとして失敗します。
zmv -n '([a-z]*)[0-9]*.mp3' '$1.mp3'
以下のように実行すると".mp3"に変換しようとして失敗します。
zmv -n '^([a-z]*)[0-9]*.mp3$' '$1.mp3'
970:名無しさん@お腹いっぱい。
12/05/13 00:22:52.56
>>>969
basename使うわけにはいかないの?
971:名無しさん@お腹いっぱい。
12/05/13 02:07:28.60
いつも for で zmv 使ってないから知らんけど '(*)<->.mp3' じゃないか?
多分それ re じゃないよ。
972:名無しさん@お腹いっぱい。
12/05/13 10:25:40.61
それだと
(hoge12)3.mp3
になるぜ
973:名無しさん@お腹いっぱい。
12/05/13 12:02:16.55
自分も普段は for 文を使っちゃうけど
zmv '(*)[0-9]##.mp3' '$1.mp3'
とかでいいのかな。まあ便利なのかもw
974:名無しさん@お腹いっぱい。
12/05/13 12:06:46.39
ああ>>972と同じになってしまうのか
zmv '(*).mp3' '${1%%[0-9]##}.mp3'
かな?
975:名無しさん@お腹いっぱい。
12/05/13 15:41:51.71
おお、たしかに。こうする必要があるか。 '(*[^[:digit:]])<->.mp3'
976:名無しさん@お腹いっぱい。
12/05/13 16:34:24.13
そうか shortest match flag とかはないんだな。
うーん *(#c,)<-> で落ちる。こんなパターン使わないけど。
977:969
12/05/13 17:35:45.22
ありがとうございます。
>zmv '(*).mp3' '${1%%[0-9]##}.mp3'
でうまく行きました。
これは$1のうちの%%と##で挟まれた正規表現を取り除くという書式なのでしょうか?
>おお、たしかに。こうする必要があるか。 '(*[^[:digit:]])<->.mp3'
<-->はどういう処理ですか? こちらは使いかたがよく分かりませんでした。
すみません。zmvのパラメータについて解説しているサイトはありませんか? zmvの書式が難しくて。
978:名無しさん@お腹いっぱい。
12/05/13 18:03:15.98
man zshcontrib
979:名無しさん@お腹いっぱい。
12/05/13 19:04:25.29
>>978
ありがとうございます。
man zmvで見つからない、とか思っていたので。
980:名無しさん@お腹いっぱい。
12/05/13 21:42:08.02
>>977
man zshexpn すれば詳しいことが載っているが ${name%%pattern} と x## の組み合わせだよ
前者はシェルスクリプト一般でよく使われる
<-> は <[x]-[y]> の特殊例で数字にマッチする
981:名無しさん@お腹いっぱい。
12/05/15 01:08:56.08
>>980
ありがとうございます。
ようやく理解できました。
982:名無しさん@お腹いっぱい。
12/05/15 19:43:39.12
man zshall しかうたないな
983:名無しさん@お腹いっぱい。
12/05/16 01:24:52.01
>>982
俺もman zshall派
でもそうすると目当てのものみつけにくいんだよなw
984:名無しさん@お腹いっぱい。
12/05/16 01:34:37.45
使うのは zshall でも人に示すときは絞る
昔から言われてるけど zsh 関係のドキュメントは読み物としては面白くないな
985:名無しさん@お腹いっぱい。
12/05/16 23:36:44.49
言われてた気もするけど今思うに特別そうでもない
986:名無しさん@お腹いっぱい。
12/05/17 12:33:01.23
うん。