XARGS неправильно интерпретирует обратную косую черту в Windows

470
vlad_tepesch

Я использую утилиты gnuwin32 на Windows 7.

Я хочу передать список файлов, xargsчтобы удалить файлы.

но если я передам нормальные пути Windows, Xargs интерпретирует и удаляет обратную косую черту

dir /B /S c:\windows\system32\*.sys | head | xargs echo 

приводит к следующему входу в xargs

c:\windows\system32\clfs.sys c:\windows\system32\win32k.sys c:\windows\system32\drivers\1394bus.sys c:\windows\system32\drivers\1394ohci.sys c:\windows\system32\drivers\acpi.sys c:\windows\system32\drivers\acpipmi.sys c:\windows\system32\drivers\adp94xx.sys c:\windows\system32\drivers\adpahci.sys c:\windows\system32\drivers\adpu320.sys c:\windows\system32\drivers\afd.sys 

что потом печатает

c:windowssystem32clfs.sys c:windowssystem32win32k.sys c:windowssystem32drivers1394bus.sys c:windowssystem32drivers1394ohci.sys c:windowssystem32driversacpi.sys c:windowssystem32driversacpipmi.sys c:windowssystem32driversadp94xx.sys c:windowssystem32driversadpahci.sys c:windowssystem32driversadpu320.sys c:windowssystem32driversafd.sys 

с удаленными обратными слешами. Таким образом, вместо того, чтобы просто выводить ввод в командной строке, он анализирует и интерпретирует строки, которые, я думаю, не должны делать.

Как обойти это?

1
укажите путь к файлу. это стандартный подход к экранированию escape-символов. Однако я удивлен, что у вас нет проблем с переключателями в директории. Frank Thomas 8 лет назад 0
@FrankThomas я не понимаю, что вы имеете в виду. проблема не в команде `dir`. vlad_tepesch 8 лет назад 0
Получаете ли вы тот же результат, если используете GNU Parallel вместо xargs? Ole Tange 8 лет назад 0

1 ответ на вопрос

0
Ole Tange

I can reproduce your findings on GNU Linux. Here the solution is to use GNU Parallel instead. So try using GNU Parallel:

dir /B /S c:\windows\system32\*.sys | head | parallel echo 

It has been tested on CygWin, so it might just work on gnuwin32, too.

похоже, что gnuwin32 не содержит `параллельного`а :-( vlad_tepesch 8 лет назад 0
Простота установки: wget pi.dk/3; Баш 3 Ole Tange 8 лет назад 0