เทียบเท่า rm และ mv ใน windows .cmd


93

ฉันมีสิ่งต่อไปนี้ในเชลล์สคริปต์ฉันต้องการแปลงบรรทัดต่อไปนี้เป็นไฟล์ windows cmd .. ใครก็ได้ให้อินพุตว่าอะไรเทียบเท่าสำหรับ "rm" และ "mv" ในไฟล์ windows cmd

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

9
delและmove.
Blorgbeard ออกใน

คำตอบ:


141

moveใน windows เทียบเท่ากับmvคำสั่งใน Linux

delใน windows เทียบเท่ากับrmคำสั่งใน Linux


24
นี่คือการทำเกินขนาด พฤติกรรมและความสามารถค่อนข้างแตกต่างกัน
StephenBoesch

สำหรับพฤติกรรมและความสามารถที่ใกล้เคียงกันให้ใช้คำแนะนำของ @Dave เพื่อใช้พอร์ต Win32 ของเครื่องมือ Linux ฉันยังเหมือน GnuWin32 ที่ได้รับการแนะนำ แต่ฉันมักจะเพียงแค่เพิ่มbinไดเรกทอรีจากCygwinหรือGit ทุบตี / คอมไพล์สำหรับ Windowsกับ PATHWindows หากคุณต้องการใช้ 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 สงวนลิขสิทธิ์.

( ประกาศลิขสิทธิ์ที่เก็บถาวร )

และดูเหมือนจะมีเคล็ดลับการเขียนโปรแกรมที่เป็นประโยชน์มากมายพร้อมกับอารมณ์ขัน (ใช่การสะกดแบบอังกฤษ) และข้อมูลเกี่ยวกับวิธีแก้ไขห้องน้ำญี่ปุ่น ฉันยังพบบางสิ่งที่พูดถึง "รายงานอิบารากิ" แต่ฉันไม่รู้ว่านั่นคือเว็บไซต์หรือไม่

ฉันคิดว่าฉันจะไปที่นั่นให้บ่อยขึ้น มันมีประโยชน์มาก อุปกรณ์ประกอบฉากสำหรับ Ben Bullock ซึ่งมีอีเมลอยู่ในหน้าของเขา ถ้าเขาต้องการให้ฉันลบข้อมูลนี้ฉันจะทำ

ฉันจะรวมข้อจำกัดความรับผิดชอบ ( เก็บถาวร ) จากไซต์:

ข้อจำกัดความรับผิดชอบโปรดอ่านข้อจำกัดความรับผิดชอบต่อไปนี้ก่อนใช้รหัสโปรแกรมคอมพิวเตอร์ใด ๆ บนไซต์นี้

ไม่มีการรับประกันสำหรับโปรแกรมตามขอบเขตที่อนุญาตโดยกฎหมายที่ใช้บังคับ เว้นแต่จะระบุไว้เป็นอย่างอื่นในการเขียนผู้ถือลิขสิทธิ์และ / หรือบุคคลอื่น ๆ จะจัดหาโปรแกรม“ ตามสภาพ” โดยไม่มีการรับประกันใด ๆ ทั้งที่แสดงออกหรือโดยนัยรวมถึง แต่ไม่ จำกัด เพียงการรับประกันโดยนัยเกี่ยวกับความสามารถในการค้าขายและความเหมาะสมสำหรับวัตถุประสงค์เฉพาะ . ความเสี่ยงทั้งหมดเกี่ยวกับคุณภาพและประสิทธิภาพของโปรแกรมอยู่กับคุณ หากโปรแกรมพิสูจน์ได้ว่ามีข้อบกพร่องคุณจะเป็นผู้รับผิดชอบค่าใช้จ่ายในการให้บริการซ่อมแซมหรือแก้ไขที่จำเป็นทั้งหมด

ไม่ว่าในกรณีใด ๆ เว้นแต่จะกำหนดโดยกฎหมายที่ใช้บังคับหรือตกลงเป็นลายลักษณ์อักษรผู้ถือลิขสิทธิ์หรือบุคคลอื่นใดที่แก้ไขและ / หรือถ่ายทอดโปรแกรมตามที่ได้รับอนุญาตข้างต้นจะต้องรับผิดชอบต่อความเสียหายรวมทั้งทั่วไปกรณีพิเศษเหตุการณ์หรือเหตุการณ์ที่ตามมา ความเสียหายที่เกิดขึ้นจากการใช้งานหรือไม่สามารถใช้โปรแกรมได้ (รวมถึง แต่ไม่ จำกัด เพียงการสูญเสียข้อมูลหรือข้อมูลที่แสดงผลไม่ถูกต้องหรือความสูญเสียที่ได้รับจากคุณหรือบุคคลที่สามหรือความล้มเหลวของโปรแกรมในการดำเนินการกับโปรแกรมอื่นใดก็ตาม) แม้ว่า เจ้าของดังกล่าวหรือบุคคลอื่นได้รับคำแนะนำถึงความเป็นไปได้ของความเสียหายดังกล่าว


  1. อันที่จริงฉันพบข้อมูลด้วยการค้นหาโดย Google สำหรับ "cmd equivalent of rm"

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

ข้อมูลที่ฉันแบ่งปันเกิดขึ้นก่อน


1
โปรดทราบว่าคุณต้อง "/" ไม่ใช่สิ่งนี้: "\" rmdirเพื่อลบโฟลเดอร์delสำหรับไฟล์
JillAndMe
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.