ฉันมีความโชคร้ายที่มาจากพื้นหลังของ MS-DOS - แต่อย่างน้อยก็ทำให้ฉันซาบซึ้งว่า Linux มีประสิทธิภาพมากขึ้นเพียงใด ฉันกำลังพยายามทำให้ Linux-Fu ของฉันใกล้เคียงกัน แต่มีสองสิ่งที่สามารถทำได้กับ DOS ซึ่งฉันไม่แน่ใจว่าจะทำอย่างไรให้สำเร็จได้อย่างง่ายดายด้วย Linux:
การเปลี่ยนชื่อไฟล์หลาย ๆ ไฟล์ - การใช้สัญลักษณ์สองตัว
c:\> dir
Directory of c:\
file1.txt
file2.txt
file3.txt
file4.txt
c:\>rename *.txt *.bak
c:\> dir
Directory of c:\
file1.bak
file2.bak
file3.bak
file4.bak
ฉันรู้ว่าฉันสามารถใช้find -execที่นี่ แต่มันเป็นไปได้ที่จะใช้ไวยากรณ์ที่สั้นกว่า - บางทีอาจจะmvมีการตั้งค่าสถานะพิเศษหรือไวยากรณ์บางอย่าง? ฉันเดาว่ากุญแจตัวนี้คือwildcard ตัวที่สอง *เนื่องจาก linux ไม่ควรมีปัญหากับอันแรก (เช่นฉันรู้วิธีเลือกไฟล์ที่ฉันต้องการเปลี่ยนชื่อโดยใช้ wildcard)
การเปลี่ยนชื่อไฟล์เดียว - ใช้สัญลักษณ์ตัวแทนเดียว
c:\> dir
Directory of c:\
file1.txt
c:\>rename file1.txt *.bak
c:\> dir
Directory of c:\
file1.bak
สิ่งนี้จะเป็นประโยชน์อย่างยิ่งเมื่อเปลี่ยนชื่อไฟล์ที่ยาวและไม่สะดวก ฉันคิดว่าบางทีฉันสามารถใช้mv file1.txt $1.bakท้ายfile1.txt.bakซึ่งก็จะยอมรับได้ แต่ฉันไม่แน่ใจว่าคุณสามารถอ้างอิง$1พารามิเตอร์ inline ด้วยคำสั่งเชลล์ อีกครั้งในกรณีพิเศษนี้เป็นเพียงความสะดวกของวิธี ms-dos bastardizes *wildcard ที่จะใช้เป็นประเภทจับภาพ / แทนที่ตรงกับส่วนหนึ่งของชื่อไฟล์
การกรองรายชื่อไดเรกทอรีด้วย Wildcard
c:\> dir
Directory of c:\
file1.txt
file2.txt
file3.txt
file4.txt
text.txt
\temp (directory)
c:\> dir file*
Directory of c:\
file1.txt
file2.txt
file3.txt
file4.txt
c:\> t*
Directory of c:\
text.txt
\temp (directory)
ฉันไม่แน่ใจว่าไวยากรณ์ที่ถูกต้องสำหรับการทำเช่นนั้นlsคืออะไรหรือถ้าเป็นไปได้ ถ้าผมทำอะไรเหมือนls t*มันจะ recurse tลงในไดเรกทอรีที่เริ่มต้นด้วย วิธีแก้ปัญหาของฉันมีการใช้find . --max-depth 1 -iname "t*"หรือสิ่งที่ต้องการls -al | grep t- ไม่สั้นและง่ายเท่าที่dir t*ควร
ในที่สุดฉันก็รู้ว่าฉันสามารถตั้งชื่อแทนเพื่อทำให้คำสั่งยาวเหล่านี้สั้นลง แต่ฉันอยากจะเรียนรู้ลินุกซ์แบบนอกกรอบสำหรับทำสิ่งเหล่านี้เพราะบางครั้งคุณเชื่อมต่อกับระบบรีโมตหรือทำงาน บนเครื่องใหม่
ดังนั้นฉันmvและlsไฟล์แบบเดียวกับที่ฉันเคยใช้dirและrenameไฟล์ได้อย่างไร