$ ls cn*
cn blah blah.txt
$ ls cn\ *
ls: cannot access 'cn *': No such file or directory
$ ls cn*|hexdump -C
00000000 63 6e e2 80 85 62 6c 61 68 c2 a0 62 6c 61 68 2e |cn...blah..blah.|
00000010 74 78 74 0a |txt.|
$ mv cn blah blah.txt 'cn blah blah.txt'
mv: 'cn blah blah.txt' and 'cn blah blah.txt' are the same file
注:0xe28085はU + 2005(FOUR-PER-EM SPACE)のUTF-8エンコーディング、0xC2A0はU + A0(NO-break SPACE)のUTF-8エンコーディングです。最初のパラメータをコピーして貼り付けmv
ます'
。ファイル名の周りにsは必要ありません。いいえファイル名の一般スペース(U+20)。
通常のスペース(U + 20など)を使用してファイル名を入力できるようにファイル名を変更するにはどうすればよいですか?
答え1
そしてzsh
:
autoload zmv
zmv '*' $'${f//[\u2005\ua0]/ }'
U + 2005は一般的にまたはとしてblank
分類されるため、space
次のようにすることもできます。
zmv '*' '${f//[[:blank:]]/ }'
または:
zmv '*' '${f//[[:space:]]/ }'
現在の作業ディレクトリに隠されていないファイル名のU + 0020スペースに分類されるか、U + 0020スペースを使用しているすべての文字を置き換えますblank
。space
U + 00A0ははるかにまれであるため、GNUシステムを含む複数のシステムでは区切り文字/区切り文字として使用されないため、U + 00A0として分類されません。