[20220311]windwos下使用seq與xargs建立多個子目錄問題.txt

lfree發表於2022-03-14

[20220311]windwos下使用seq與xargs建立多個子目錄問題.txt

--//要建立202201,202202,...子目錄在windows下報錯如下。
\>seq 202201 1 202212 | xargs -iQ  mkdir Q
': Invalid argumentdirectory `202201
': Invalid argumentdirectory `202202
': Invalid argumentdirectory `202203
': Invalid argumentdirectory `202204
': Invalid argumentdirectory `202205
': Invalid argumentdirectory `202206
': Invalid argumentdirectory `202207
': Invalid argumentdirectory `202208
': Invalid argumentdirectory `202209
': Invalid argumentdirectory `202210
': Invalid argumentdirectory `202211
': Invalid argumentdirectory `202212

--//首先我無法理解,我安裝unixutil包,mkdir.exe這個命令是存在的.
D:>dir /s/b c:\windows\system32\mkdir.exe
c:\windows\system32\mkdir.exe

D:\>which  mkdir.exe
C:\WINDOWS\system32\mkdir.exe

--//我知道windows的cmd的內部命令md,mkdir都是建立目錄.當我使用xargs時,實際上呼叫的是外部命令mkdir.exe.

D:\tmp\xxx>seq 202201 1 202201 | xargs -iQ md Q
xargs: cannot fork

--//為什麼上面的方式執行不成功呢,加入路徑嘗試如下:

D:\tmp\xxx>seq 202201 1 202201 | xargs -iQ c:\windows\system32\mkdir Q
': Invalid argument\mkdir: cannot make directory `202201
                   +++++++
D:\tmp\xxx>seq 202201 1 202201 | xargs -iQ c:\windows\system32\mkdir.exe Q
': Invalid argument\mkdir.exe: cannot make directory `202201
                   ++++++++++

D:\tmp\xxx>seq 202201 1 202201 | xargs -iQ mkdir Q
': Invalid argumentdirectory `202201

--//注意兩者提示不同,前者解析不對.
--//後面的報錯': Invalid argumentdirectory `202201
--//實際上
--//': Invalid argument
--//directory `202201

D:\tmp\xxx>seq 202201 1 202201 | xargs -iQ mkdir.exe Q
': Invalid argumentake directory `202201
~~~~~~~~~~~~~~~~~~~

--//ake 又是那裡冒出來的,奇怪.windows缺乏必要的除錯跟蹤工具,或者我不瞭解,放棄探究.
--//實際上mkdir命令支援多個引數,無需使用xargs的-i引數.執行如下:

D:\tmp\xxx>seq 202201 1 202212  | xargs mkdir
D:\tmp\xxx>dir /s/b 2022*
D:\tmp\xxx\202201
D:\tmp\xxx\202202
D:\tmp\xxx\202203
D:\tmp\xxx\202204
D:\tmp\xxx\202205
D:\tmp\xxx\202206
D:\tmp\xxx\202207
D:\tmp\xxx\202208
D:\tmp\xxx\202209
D:\tmp\xxx\202210
D:\tmp\xxx\202211
D:\tmp\xxx\202212

--//如果使用內部命令解析,並且xargs -iQ 命令,改寫如下ok。
seq 202201 1 202212 | xargs -iQ cmd /c mkdir Q

--//似乎xrags -i命令與mkdir的配合之間存在某種問題.以下執行都是ok的.
D:\tmp\xxx>which  echo.exe
C:\WINDOWS\system32\echo.exe

D:\tmp\xxx>seq 202201 1 202202  | xargs -iQ echo.exe Q
202201
202202

D:\tmp\xxx>seq 202201 1 202202  | xargs -iQ echo Q
202201
202202

D:\tmp\xxx>seq 202201 1 202202  | xargs -iQ cmd /c echo Q
202201
202202


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2870812/,如需轉載,請註明出處,否則將追究法律責任。

相關文章