我使用的是 Windows 7,由於我無法控制的原因,需要建立以單一空格結尾的目錄。它將包含各種檔案和子目錄。
我嘗試過md
and 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"
您將需要引號。