эквивалент rm и mv в windows .cmd

93

У меня есть следующий сценарий оболочки: я хочу преобразовать следующие строки в файл cmd Windows .. может ли кто-нибудь предоставить вводные данные о том, что является эквивалентом для "rm" и "mv" в файле cmd Windows.

rm -f ${BUILD_ID}/${BUILD_ASIC}*rampatch*
mv ${BUILD_ID}/${BUILD_ASIC}*rampatch* ${BUILD_ID}/emul/
user2341103
источник
9
delи move.
Blorgbeard отсутствует

Ответы:

141

moveв Windows эквивалент mvкоманды в Linux

delв Windows эквивалент rmкоманды в Linux

Джайнендра
источник
24
Это чрезмерное упрощение. Поведение и возможности совершенно разные.
StephenBoesch
Для почти идеального соответствия поведения и возможностей используйте предложение @Dave использовать порты Win32 инструментов Linux. Мне также нравится предложенный GnuWin32, хотя я обычно просто добавляю в свою Windows binкаталоги из Cygwin или Git bash / git для Windows PATH. Если вы хотите использовать чистый CMD , вы можете ближе познакомиться с поведением и возможностями, используя предложения, которые я поделился в своем ответе ниже.
bballdave025
34

moveи, delбезусловно, ЯВЛЯЮТСЯ эквивалентами, но с точки зрения функциональности они, к сожалению, НЕ эквивалентны. Например, с помощью команды нельзя перемещать оба файла и папки (в сценарии с подстановочными знаками) move. То же самое и с del.

На мой взгляд, предпочтительным решением является использование портов Win32 инструментов Linux, лучшая коллекция которых я нашел здесь .

mvи rmнаходятся в пакете CoreUtils , и они прекрасно работают!

Дэйв
источник
14

Если вы хотите увидеть более подробное обсуждение различий для команд, см. Раздел « Подробности о различиях » ниже.

С LeMoDa.net сайта 1 ( заархивированном ), в частности командной строки , эквиваленты для Windows и Unix страницы ( в архиве ), я нашел следующий 2 . В следующей редакции будет лучшая / более полная таблица.

Windows command     Unix command
rmdir               rmdir
rmdir /s            rm -r
move                mv

Мне интересно услышать от @Dave и @javadba, насколько эквивалентны команды - как сравниваются « поведение и возможности », достаточно ли они похожи или «к сожалению НЕ эквивалентны ».

Все, что я обнаружил, это то, что когда я использовал его, чтобы попытаться рекурсивно удалить каталог и его составляющие файлы и подкаталоги, например

(Windows cmd)>rmdir /s C:\my\dirwithsubdirs\

дал мне стандартное сообщение Windows-знает-лучше-чем-ты-уверен и подсказку

dirwithsubdirs, Are you sure (Y/N)?

и что когда я печатал Y, в результате мой верхний каталог, а также составляющие его файлы и подкаталоги исчезли.


редактировать

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

Windows command     Unix command
rmdir               rmdir
rmdir /s /q         rm -r
rmdir /s /q         rm -rf
rmdir /s            rm -ri
move                mv
del <file>          rm <file>

Если вам нужен эквивалент для

rm -rf

ты можешь использовать

rmdir /s /q

или, как описал автор полученного мной ответа,

Но есть еще один способ «старой школы», который использовался в те времена, когда у команд не было опций для подавления подтверждающих сообщений. Просто введите ECHOнужный ответ и передайте значение команде.

echo y | rmdir /s


Подробнее о различиях

Я протестировал каждую из команд с помощью Windows CMD и Cygwin (с его bash).

Перед каждым тестом я делал следующую настройку.

Windows CMD

>mkdir this_directory
>echo some text stuff > this_directory/some.txt
>mkdir this_empty_directory

Cygwin bash

$ mkdir this_directory
$ echo "some text stuff" > this_directory/some.txt
$ mkdir this_empty_directory

Это привело к следующей файловой структуре для обоих.

base
|-- this_directory
|   `-- some.txt
`-- this_empty_directory

Вот результаты. Обратите внимание, что я не буду отмечать каждый как CMD или bash; CMD будет иметь >спереди, а bashбудет - $ спереди.

RMDIR

>rmdir this_directory
The directory is not empty.

>tree /a /f .
Folder PATH listing for volume Windows
Volume serial number is ████████ ████:████
base
+---this_directory
|       some.txt
|
\---this_empty_directory

> rmdir this_empty_directory

>tree /a /f .
base
\---this_directory
        some.txt
$ rmdir this_directory
rmdir: failed to remove 'this_directory': Directory not empty

$ tree --charset=ascii
base
|-- this_directory
|   `-- some.txt
`-- this_empty_directory

2 directories, 1 file

$ rmdir this_empty_directory

$ tree --charset=ascii
base
`-- this_directory
    `-- some.txt

RMDIR /S /Q and RM -R ; RM -RF

>rmdir /s /q this_directory

>tree /a /f
base
\---this_empty_directory

>rmdir /s /q this_empty_directory

>tree /a /f
base
No subfolders exist
$ rm -r this_directory

$ tree --charset=ascii
base
`-- this_empty_directory

$ rm -r this_empty_directory

$ tree --charset=ascii
base
0 directories, 0 files
$ rm -rf this_directory

$ tree --charset=ascii
base
`-- this_empty_directory

$ rm -rf this_empty_directory

$ tree --charset=ascii
base
0 directories, 0 files

RMDIR /S AND RM -RI Здесь у нас есть небольшая разница, но они довольно близки.

>rmdir /s this_directory
this_directory, Are you sure (Y/N)? y

>tree /a /f
base
\---this_empty_directory

>rmdir /s this_empty_directory
this_empty_directory, Are you sure (Y/N)? y

>tree /a /f
base
No subfolders exist
$ rm -ri this_directory
rm: descend into directory 'this_directory'? y
rm: remove regular file 'this_directory/some.txt'? y
rm: remove directory 'this_directory'? y

$ tree --charset=ascii
base
`-- this_empty_directory

$ rm -ri this_empty_directory
rm: remove directory 'this_empty_directory'? y

$ tree --charset=ascii
base
0 directories, 0 files

I'M HOPING TO GET A MORE THOROUGH MOVE AND MV TEST


Примечания

  1. Я почти ничего не знаю о веб-сайте LeMoDa, кроме того факта, что информация

Авторские права © Бен Баллок, 2009-2018 . Все права защищены.

( заархивировано уведомление об авторских правах )

и что, похоже, есть куча полезных советов по программированию, а также немного юмора (да, британская орфография) и информация о том, как починить японские туалеты. Я также нашел некоторые вещи говорить о «Ибараки Report», но я не знаю, что это веб - сайт.

Я думаю, что буду ходить туда почаще; это весьма полезно. Реквизит Бену Баллоку, электронная почта которого находится на его странице. Если он хочет, чтобы я удалил эту информацию, я это сделаю.

Я включу отказ от ответственности ( заархивированный ) с сайта:

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

На программу не распространяется гарантия в пределах, допускаемых действующим законодательством. За исключением случаев, когда в письменной форме указано иное, правообладатели и / или другие стороны предоставляют программу «как есть» без каких-либо явных или подразумеваемых гарантий, включая, но не ограничиваясь, подразумеваемые гарантии товарного состояния и пригодности для определенной цели . Весь риск, связанный с качеством и производительностью программы, лежит на вас. Если программа окажется неисправной, вы берете на себя все необходимое обслуживание, ремонт или исправление.

Ни при каких обстоятельствах, если это не требуется действующим законодательством или не согласовано в письменной форме, любой правообладатель или любая другая сторона, которая изменяет и / или передает Программу, как разрешено выше, не будет нести перед вами ответственность за ущерб, включая любые общие, особые, случайные или косвенные Убытки, возникшие в результате использования или невозможности использования программы (включая, но не ограничиваясь, потерю данных или данные, которые были представлены неточными, или убытки, понесенные вами или третьими сторонами, или неспособность программы работать с любыми другими программами), даже если Такой держатель или другая сторона были предупреждены о возможности таких убытков.


  1. На самом деле, я нашел информацию с помощью поиска Google по запросу "cmd эквивалент rm"

https://www.google.com/search?q=cmd+equivalent+of+rm

Информация, которой я делюсь, появилась первой.

bballdave025
источник
1
Обратите внимание: вы должны "/" не это: "\" rmdirдля удаления папок delдля файлов
JillAndMe