106

我在 shell 脚本中有以下命令。我想将这些行转换为 windows cmd 文件。任何人都可以提供有关 Windows cmd 文件中“rm”和“mv”的等效项的输入吗?

rm -f ${BUILD_ID}/${BUILD_ASIC}*rampatch*
mv ${BUILD_ID}/${BUILD_ASIC}*rampatch* ${BUILD_ID}/emul/
4

3 回答 3

164

move在 windows 中相当于mvLinux 中的命令

del在 windows 中相当于rmLinux 中的命令




更新:这是一个简化的答案,但行为和功能与@WestCoastProjects 在评论中提到的完全不同。

于 2013-07-12T05:19:52.907 回答
39

move并且del肯定是等价物,但从功能的角度来看,它们非常不等价。例如,您不能使用该move命令同时移动文件和文件夹(在通配符方案中)。同样的事情也适用于del.

在我看来,首选的解决方案是使用 Linux 工具的 Win32 端口,我在这里找到了最好的工具集。

mv并且rmCoreUtils包中,它们工作得非常好!

于 2014-04-23T22:18:51.377 回答
23

如果您想查看有关命令差异的更详细讨论,请参阅下面的有关差异的详细信息部分。

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-knows-better-than-you-do-are-you-sure 消息和提示

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)测试了每个命令。

在每次测试之前,我进行了以下设置。

窗口命令

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

赛格温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有一个,前面有一个$

非常感谢@JillAndMe 的评论

请注意,您必须[使用] "/" 而不是这个:"\" [;]rmdir用于删除文件del的文件夹

相应地进行了更改,并添加了 和 的del示例rm

DEL and RM (用于文件)。据我所知,这些工作相同。

>del this_directory\some.txt

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

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

2 directories, 0 files

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

<s>I'M HOPING TO GET</s> ANYONE IS WELCOME TO ANSWER WITH A MORE THOROUGH "MOVE AND MV" TEST


笔记

  1. 我对 LeMoDa 网站几乎一无所知,除了信息是

版权所有 © 本布洛克 2009-2018。版权所有。

存档版权声明

并且似乎有一堆有用的编程技巧以及一些幽默(是的,英国拼写)和有关如何修理日本厕所的信息。我还发现了一些关于“茨城报告”的东西,但我不知道那不是网站。

我想我会经常去那里;它非常有用。给 Ben Bullock 的道具,他的电子邮件在他的页面上。如果他要我删除此信息,我会的。

我将包括网站上的免责声明存档):

免责声明 在使用本网站上的任何计算机程序代码之前,请阅读以下免责声明。

在适用法律允许的范围内,本程序不提供任何保证。除非另有书面说明,否则版权所有者和/或其他方“按原样”提供程序,不提供任何形式的明示或暗示保证,包括但不限于对适销性和特定用途适用性的暗示保证. 程序质量和性能的全部风险由您承担。如果该程序被证明有缺陷,您将承担所有必要的服务、维修或纠正的费用。

在任何情况下,除非适用法律要求或书面同意,任何版权所有者或任何其他按上述许可修改和/或传达程序的方均不对您承担任何损害赔偿责任,包括任何一般性、特殊性、偶然性或后果性因使用或无法使用本程序而造成的损害(包括但不限于数据丢失或数据不准确或由您或第三方造成的丢失或本程序无法与任何其他程序一起运行),即使此类持有人或其他方已被告知此类损害的可能性。


  1. 实际上,我通过 Google 搜索“cmd 等效于 rm”找到了该信息

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

我分享的信息首先出现。鉴于 Google 的个性化和不断更新的方式,您的搜索结果可能会大不相同。

于 2019-02-11T19:39:01.600 回答