共享文件 连接到服务器时出现问题,通过 SMB 在 macOS 使用 Finder 访问共享文件夹中的文件时,有时会出现错误代码 -43。这是什么原因导致的?...

no.981_01.png

在上面的屏幕截图中,Finder 尝试(通过 SMB)访问共享文件夹中的目录“1_ã”并创建子文件夹,这导致了错误。出现此问题的原因是字符“ã”使用范式 D (NFD) 进行编码,此范式是“标准分解”Unicode 范式。

然而,在客户端,Finder 使用范式 C (NFC) 发送请求,此范式是“标准分解”格式。因此,NAS 服务器无法识别目录名或查找目录,因此服务器报告错误。

这一差别也可能导致名称中包含 NFD 格式字母的文件夹中的文件不显示和不可编辑。在此类文件夹中执行重命名、创建或编辑文件等操作可能失败。

此错误是由服务器和客户端使用两个不同的 Unicode 范式而导致的。用户尝试通过 SMB 访问 NAS 服务器上的共享文件夹时,客户端会发送请求确认目录中有哪些文件。NAS 服务器收到请求时,会将目录中的所有文件名发送到客户端。文件名使用不同的 Unicode 范式(在本例中,服务器端为 NFD,客户端为 NFC)时,便会出现问题。将文件保存到 NAS 服务器时,如果客户端选择其他格式,便会出现这种情况。客户端收到文件名时,会要求服务器显示这些文件或请求在目录中创建一个新文件。请求的编码格式取决于客户端的设置。如果客户端请求的格式不同于服务器上使用的格式,服务器便无法找到文件或目录,然后报告错误。

但是,如果要将 NFD 格式的文件名转换为 NAS 上存储的文件的 NFC 格式,可以使用一项名为 convmv 的工具。请按下列步骤安装 convmv。

登录 NAS 并转到 App Center。

安装 Perl。

no.981_02.png

将文件保存到 NAS 上的目录。(例如,共享文件夹“Public”)

打开“Terminal”(终端)并建立 SSH 连接以登录到 NAS。

输入 convmv 所在文件夹的路径。

命令输入:Run: cd /share/Public

解压缩文件。

命令输入:Run: tar -xvf convmv-2.05.tar.gz

输入已解压文件所在的文件夹路径。

命令输入:Run: cd convmv-2.05

确保 convmv 为可执行程序。

命令输入:Run: chmod a+x convmv

修改 NAS 的 Perl shell 路径。

命令输入:Run: sed -i -e'1c\\#\!\/opt\/bin\/perl' convmv

转换文件名。

命令输入:Run: ./convmv -r --nfc --nosmart -f UTF-8 -t UTF-8 --notest

注意:

以上说明基于 x86_64 平台的 QTS 4.3.6 固件。使用先前的固件版本尝试这些步骤可能会产生不同的结果。例如,在第 10 步中 Perl shell 路径可能会有所不同,所以可能需要将其替换为正确的路径。

以上说明不适用于基于 ARM 的型号。

### 回答1: 在 MacOS 的终端,可以使用以下命令来查找指定目录下的所有文件夹名称,并将其输出到 1.txt 文件: ``` find /path/to/directory -type d -print > 1.txt ``` 其 '/path/to/directory' 是你需要查找的目录。 ### 回答2: 在 macOS ,可以使用shell脚本通过以下步骤查找出指定目录下的所有文件夹名称,并将结果输出到1.txt文件。 1. 首先,打开终端应用程序。 2. 在终端使用cd命令切换到指定目录下。例如,如果要查找的目录是/Users/username/Documents,则可以输入以下命令并按下回车键: ``` cd /Users/username/Documents ``` 3. 接下来,使用以下shell脚本命令来查找所有文件夹名称并将结果输出到1.txt文件: ``` find . -type d -print > 1.txt ``` 该命令的含义是在当前目录下使用find命令查找所有类型为目录(文件夹)的项目,并将结果输出到1.txt文件。 4. 执行以上命令后,可以使用cat命令来查看1.txt文件文件夹名称: ``` cat 1.txt ``` 这样就可以得到指定目录下的所有文件夹名称,并且它们以每行一个的形式显示在1.txt文件。 请注意,这仅是查找指定目录下的直接子文件夹名称,不包括子文件文件夹。如果需要查找并包括子文件文件夹名称,可以使用递归参数来稍微修改find命令。 ### 回答3: 在 macOS ,可以使用 shell 脚本通过命令行工具来查找指定目录下的所有文件夹名称,并将结果输出到 1.txt 文件。 以下是一个示例的脚本代码: ```bash #!/bin/bash # 指定要查找的目录路径 directory="/path/to/directory" # 使用 find 命令查找目录下的所有文件夹,并将结果输出到 1.txt 文件 find "$directory" -type d > 1.txt ``` 在脚本,首先指定要查找的目录路径,将 `"/path/to/directory"` 替换为实际的目录路径。然后使用 `find` 命令来查找该目录下的所有文件夹,并通过重定向 `>` 将结果输出到 `1.txt` 文件。 保存以上代码为一个脚本文件(例如 `find_directories.sh`),然后在终端运行该脚本即可完成查找并输出到文件的操作。请确保将目录路径正确替换,并在终端进入脚本所在目录后运行脚本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值