我使用的是 Windows 7,由于一些不可控的原因,我需要创建一个以单个空格结尾的目录。它将包含各种文件和子目录。
我尝试过md
和rename
,也使用 UNC 路径,但失败了,要么给出“不正确的语法”,要么更常见的是,只是忽略了空格。
我该怎么做?
答案1
要在 Windows 中创建带有尾随空格字符的目录,请调出命令提示符并输入以下内容:
md "\\?\C:\mydirectory "
该目录必须是绝对(非相对)目录,并且必须以\\?\
类似地,你可以使用 rd 命令删除目录
rd "\\?\C:\mydirectory "
但使用此命令删除目录之前,目录必须是空的。
答案2
cygwin 可以
$ mkdir 'abcde'
$ mkdir 'abcde '
$ mkdir 'abcde '
$ ls -l
total 0
drwxr-xr-x+ 1 user None 0 May 15 17:11 abcde
drwxr-xr-x+ 1 user None 0 May 15 17:11 abcde
drwxr-xr-x+ 1 user None 0 May 15 17:11 abcde
好吧,这显然是可行的,因为我们有 3 个不同的目录,但让我们尝试获取进一步的证明
$ echo * | xxd
0000000: 6162 6364 6520 6162 6364 6520 2061 6263 abcde abcde abc
0000010: 6465 2020 0a de .
6162 6364 65 20<---- that's the dir abcde, and echo * put a space in after as there is another item it lists.
6162 6364 6520 20 <-- that's the dir 'abcde ', and echo * displayed it with a space in as there is another item it lists
61 62636465 2020 0a <-- that's the dir 'abcde ', and echo * displayed it followed by new line(0a)
其他
ls 提供了一些格式化选项,例如 verical 和其他格式,例如逗号
--format=WORD
across -x, commas -m, horizontal -x, long -l, single-column -1,
verbose -l, vertical -C
--
$ ls -m
abcde, abcde , abcde
注意逗号前面的空格,这是因为空格在文件名中。',' 是格式化。但 ',' 表示空格在文件名中。
$ ls -m | xxd
0000000: 6162 6364 652c 2061 6263 6465 202c 2061 abcde, abcde , a
0000010: 6263 6465 2020 0a bcde .
--
一个非常清楚的证明,不需要看任何十六进制来验证,是-
$ mkdir 'abcde '
$ mkdir z
$ ls -m
abcde, abcde , abcde , abcde , z
$
另一种方式,正如 Mafu 在评论中提到的,是 Mingw,它有一个 Msys 包,你可以在 ming mackage 管理器中安装,msys 会安装许多命令,例如C:\MinGW\msys\1.0\bin>
mkdir.exe,还有一个 bash.exe
答案3
请注意,创建 Windows 不支持的文件可能会导致您无法通过正常方式删除它的情况。
启动 Linux 安装或 Live CD,然后运行此命令
mkdir "<mountpoint>/dirname"
您将需要引号。