gpt4 book ai didi

linux - UTF-8 文件名在 linux 终端中返回 Not Found

转载 作者:IT王子 更新时间:2023-10-29 00:22:30 27 4
gpt4 key购买 nike

我对 linux (Ubuntu) 终端中的一些文件有问题,名称中有重音符号。例如:

$ ls dir/
criação.png

所以,终端返回那个文件,所以它存在。现在让我们看看文件是否存在,使用这个简单的命令:

$ [ -f criação.png ] &&  echo "File Exist" || echo "Not Exist"
Not Exist

如您所见,“不存在”。现在,我在 OSX 上有相同的文件夹和文件,然后我运行相同的命令并返回:

$ [ -f criação.png ] &&  echo "File Exist" || echo "Not Exist"
File Exist

我对语言环境略知一二:

$ locale
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE=en_US.UTF-8
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

在 Linux 上,“Not Exist”,在 OSX 上,“File Exist”...有人知道如何解决这个问题吗?

也许这些可以帮助:
http://nedbatchelder.com/blog/201106/filenames_with_accents.html
http://www.ruby-forum.com/topic/279105

更新 - 解决方案

我终于找到了解决该问题的方法。您需要将文件从 NFD 重命名为 NFC,这是修复所有文件的命令:

cd dir/
convmv -r -i -f utf8 -t utf8 --nfc --notest .

来源:http://blog.hbis.fr/2010/08/30/macox-utf8_filenames_normalization/

最佳答案

其中一个原因可能是文件名使用了与您用来键入名称不同的带有组合标记的字符 unicode 规范化形式。参见 Unicode Equivalence .

关于linux - UTF-8 文件名在 linux 终端中返回 Not Found,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13294060/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com