unix find คำสั่งบน cmder.exe ใน windows


10

ฉันติดตั้งcmder shell emulator สำหรับ Windows

ทำงานได้ดี แต่ฉันไม่สามารถใช้คำสั่ง find ของ Unix ได้ เห็นได้ชัดเมื่อฉันพิมพ์:

'find .'

ในเทอร์มินัลจะพยายามใช้ Windows 'FIND และส่งออกข้อผิดพลาดนี้:

FIND: Parameter format not correct

ฉันต้องการใช้การค้นหาจริง ๆ และมีคำใบ้ใด ๆ เกี่ยวกับวิธีทำให้มันใช้งานได้


1
คุณจะต้องทำให้ไดเรกทอรีใดfindปรากฏก่อนC:\Windows\System32(ที่ Windows 'ค้นหาชีวิต) ในPATHตัวแปรสภาพแวดล้อม โดยทั่วไปถือว่าไม่เป็นความคิดที่ดีที่จะทำทั่วโลกเนื่องจากมีแนวโน้มที่จะสร้างความสับสนให้กับโปรแกรมอื่นที่คาดหวังว่าสภาพแวดล้อมของ Windows มาตรฐาน แต่คุณควรดูว่าคุณสามารถตั้งค่าสคริปต์เริ่มต้นใน Cmder และทำให้สคริปต์ทำสิ่งที่ต้องการset PATH=C:\path\to\folder\with\unix\find;%PATH%
Bob

ฉันไม่รู้cmderแต่ใน Linux / Unix which -a findจะแสดงโปรแกรมทั้งหมดที่สามารถทำงานได้ด้วยคำสั่ง find findระบุระบบปฏิบัติการยูนิกซ์ จากนั้นใช้เส้นทางแบบเต็มหรือจัดเรียงลำดับPATHไดเรกทอรีใหม่หรือตั้งชื่อแทนหากcmderรองรับสิ่งนี้ คุณยังสามารถเปลี่ยนชื่อของ Windows ไปfind.exe wfind.exeถ้ามัน emulates แล้วคุณสามารถใช้ในการสร้างbash type -a find
AFH



@AFH ผลตอบแทนwhich -a find /c/WINDOWS/system32/find /usr/bin/findแต่น่าเสียดายที่แม้วิ่งอัตราผลตอบแทน/usr/bin/find The system cannot find the path specified.ดูเหมือนว่าจำเป็นต้องใช้พา ธ สไตล์หน้าต่างจริงที่นี่ การtypeเปิดใช้งานเรียกใช้windows typeและปรากฏว่าcmderไม่มีเวอร์ชันเหมือนยูนิกซ์
simlev

คำตอบ:


12

ทางออกที่ง่ายที่สุดคือการสร้างนามแฝงให้กับfindไฟล์ปฏิบัติการภายในcmderโฟลเดอร์การติดตั้ง:

λ which find
/c/WINDOWS/system32/find
λ find --help
FIND: FIND: Parameter format not correct
λ alias find=C:\Files\Programs\cmder\vendor\git-for-windows\usr\bin\find.exe $*
λ find --help
Usage: /usr/bin/find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]

ฉันขอแนะนำให้คุณลองใช้Cygwinซึ่งfindผลงานออกมาจากกล่อง นั่นคือสิ่งที่ผมใช้ในการตรวจสอบสถานที่ตั้งของ-suppliedcmderfind.exe

รุ่งโรจน์เพื่อ@Bobและ@AFHสำหรับความคิดเห็นที่ชาญฉลาดของพวกเขาและเพื่อ@ LưuVĩnhPhúcสำหรับการแนะนำอีกวิธีที่ตายง่าย:

เปลี่ยนชื่อ * ระวังfindเป็นชื่ออื่นเช่นfnd.exe

นี่อาจเป็นที่นิยมมากกว่าการสร้างนามแฝงเนื่องจากcmderนามแฝงไม่ทำงานใน Windows 10 เว้นแต่ว่าUse legacy consoleจะถูกเลือกในcmdคุณสมบัติ (ดูวิธีการทำ)


ขอบคุณสำหรับคำแนะนำ ดูเหมือนว่าวิธีที่ดีที่สุดที่จะไป ปกติฉันจะใช้ cygwin เมื่ออยู่บนหน้าต่าง แต่สำหรับเหตุผลในการทำงานฉันถูกบังคับให้เป็นส่วนเสริมในตอนนี้ ฉันจะลองให้เร็วที่สุด!
Heisenbug

@Heisenbug cmderมีข้อดีที่ชัดเจนของการพกพาและไม่จำเป็นต้องติดตั้งเพื่อดำเนินการโดยผู้ใช้ที่มีสิทธิพิเศษ
simlev

คุณสามารถเปลี่ยน * ระวังfindให้เป็นชื่ออื่นได้เช่นกันfnd.exe
phuclv

ฉันเปลี่ยนชื่อรุ่น unix เพื่อหลีกเลี่ยงการแก้ไขสิ่งต่าง ๆ ใน windows แต่ขอบคุณสิ่งที่ฉันพลาดไปจริงๆคือโฟลเดอร์ที่คำสั่งเหล่านั้นเก็บไว้และคำตอบของคุณช่วยฉันได้
Heisenbug

ไม่พบ gnu ตามปกติเรียกว่า gfind ในระบบที่ไม่ใช่ gnu

4

Cmder\vendor\git-for-windows\usr\binCmder\vendor\init.batจะถูกเพิ่มในเส้นทางโดย น่าเสียดายที่มันถูกเพิ่มเข้าไปที่ส่วนท้ายของ PATH ดังนั้นจึงพบ find.exe ของ Windows ก่อน

โชคดีที่มันแก้ไขได้ง่าย เพียงเพิ่มบรรทัดนี้ภายในCmder\config\user-profile.cmd:

set "PATH=%GIT_INSTALL_ROOT%\usr\bin;%PATH%"


0

ฉันติดตั้ง smartgit ใน windows

จากนั้นฉันเพิ่มไฟล์ C: \ Program (x86) \ SmartGit \ git \ bin (โฟลเดอร์ smartgit ของฉัน) ลงในสภาพแวดล้อมของพา ธ

กด win + r เพื่อเข้าสู่การทุบตี ในเชลล์ bash คุณสามารถใช้คำสั่ง find ใน Cmder คุณยังสามารถพิมพ์ bash เพื่อใช้งานได้

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