คู่มือผู้ใช้: ใช้เปลี่ยนชื่อ Command บน Linux

คุณเคยพยายามใช้คำสั่งเปลี่ยนชื่อบน ลินุกซ์ เหรอ? คุณต้องการที่จะจับกับโรงไฟฟ้าที่เปลี่ยนชื่อไฟล์ของโลก Linux และให้ mv - และพักผ่อนด้วยตัวคุณเอง การเปลี่ยนชื่อทำได้รวดเร็วยืดหยุ่นและค่อนข้างง่าย นี่คือคำแนะนำโดยละเอียดเกี่ยวกับโรงไฟฟ้าของคำสั่งนี้





เกิดอะไรขึ้นกับ mv?

ไม่มีอะไรผิดพลาดกับ mv . อย่างไรก็ตามคำสั่งทำงานได้ดี นอกจากนี้คุณสามารถพบได้ใน Linux ทุกรุ่นใน macOS และในระบบปฏิบัติการอื่น ๆ ที่คล้าย Unix อย่างไรก็ตามสามารถใช้ได้ตลอดเวลา แต่แน่นอนคุณไม่ต้องการพลั่ว แต่ต้องการรถปราบดิน



คำสั่ง mv มีจุดมุ่งหมายในชีวิตนั่นคือการย้ายไฟล์ เป็นผลข้างเคียงที่ปลอดภัยซึ่งสามารถใช้เพื่อย้ายไฟล์เก่าได้ เป็น ไฟล์ใหม่พร้อมชื่อใหม่ เอฟเฟกต์คือการเปลี่ยนชื่อไฟล์เพื่อให้คุณได้สิ่งที่ต้องการ แต่ mv ไม่ใช่เครื่องมือปรับแต่งการเปลี่ยนชื่อไฟล์

วิธีเปลี่ยนชื่อไฟล์เดียวด้วย mv

เปลี่ยนชื่อไฟล์บน Linux



หากคุณต้องการใช้ mv เพื่อเปลี่ยนชื่อไฟล์จากนั้นพิมพ์ mv, ช่องว่างชื่อไฟล์ช่องว่างและชื่อใหม่ที่คุณต้องการให้ไฟล์มี จากนั้นกด Enter



คุณยังสามารถใช้ ls เพื่อตรวจสอบว่าไฟล์ถูกเปลี่ยนชื่อหรือไม่

mv rename

วิธีเปลี่ยนชื่อไฟล์หลายไฟล์ด้วย mv

สิ่งต่างๆเริ่มซับซ้อนหลังจากเปลี่ยนชื่อไฟล์หลายไฟล์ perl-rename ไม่มีความสามารถในการจัดการกับการเปลี่ยนชื่อไฟล์ต่างๆ คุณต้องหันไปใช้กลเม็ด Bash ที่เป็นประโยชน์ จะดีถ้าคุณรู้จัก fu บรรทัดคำสั่งระดับกลาง แต่มีปัญหาในการเปลี่ยนชื่อไฟล์ที่แตกต่างกันด้วย mv หมายถึงความสะดวกในการใช้งาน mv เพื่อเปลี่ยนชื่อไฟล์เดียว



สิ่งต่างๆบานปลายทันที



สมมติว่านี่คือไดเร็กทอรีที่มีไฟล์จำนวนมากในประเภทต่างๆ บางไฟล์มีนามสกุล .prog ส่วนขยาย. เราต้องการเปลี่ยนชื่อไฟล์เหล่านั้นที่บรรทัดคำสั่งเพื่อให้มีไฟล์ .prg ส่วนขยาย.

มาดูไฟล์กัน

rename

ต่อไปนี้เป็นวิธีการหนึ่งที่ไม่สามารถใช้การเขียนไฟล์สคริปต์ Bash จริงได้

rename

ได้ผลหรือไม่? มาตรวจสอบไฟล์แล้วดำเนินการต่อไป

rename

ดังนั้นจึงใช้งานได้ดี พวกเขาทั้งหมด .prg ตอนนี้และไม่มีไฟล์ .prog ไฟล์ในไดเร็กทอรี

เกิดอะไรขึ้น?

คำสั่งยาวทำอะไรได้จริง? มาดูกันเลย

prename

ส่วนแรกเริ่มวนซ้ำที่จะประมวลผลทุกๆ .prog ในไดเร็กทอรีในทางกลับกัน

อีกส่วนหนึ่งบอกว่าการประมวลผลจะเป็นอย่างไร ทำ . มันใช้ mv เพื่อย้ายแต่ละไฟล์ไปยังไฟล์ใหม่ ชื่อไฟล์ใหม่จะค่อนข้างใกล้เคียงกับชื่อไฟล์ต้นฉบับยกเว้นส่วน. prog นอกจากนี้จะใช้นามสกุล. prg

นี่คือวิธีง่ายๆ

แน่นอนที่สุด นี่คือไฟล์ เปลี่ยนชื่อ คำสั่ง

เปลี่ยนชื่อไฟล์บน Linux

ไม่ใช่ส่วนหนึ่งของการแจกจ่าย Linux มาตรฐานดังนั้นคุณต้องการติดตั้ง นอกจากนี้ยังมีชื่อที่แตกต่างกันในตระกูลต่างๆของ Linux แต่ทั้งหมดทำงานในลักษณะเดียวกัน คุณเพียงแค่แทนที่ชื่อคำสั่งที่ถูกต้องตามรสนิยมของ Linux ที่คุณใช้

ในการแจกแจง Debian หรือ Ubuntu คุณเพียงแค่ติดตั้ง perl-rename แบบนี้:

*.prog

ในการแจกแจงที่ได้มาจาก RedHat หรือ Fedora คุณเพียงแค่ติดตั้ง ชื่อย่อ แบบนี้. จำไว้ว่า p เริ่มต้นย่อมาจาก Perl

rename

ในการติดตั้งใน Manjaro Linux ให้ใช้คำสั่งต่อไปนี้ โปรดทราบว่าคำสั่งเปลี่ยนชื่อเรียกว่า s

.prog

ใช้คำสั่งเปลี่ยนชื่อ -> มาลองอีกครั้ง

ในที่นี้เราจะใช้ rename เรากำลังทำสิ่งนี้เพื่อให้เรามีชุดไฟล์. prog

.prg

มาใช้คำสั่งที่ระบุด้านล่างเพื่อเปลี่ยนชื่อ เราจะตรวจสอบด้วย สั่งว่าทำงานหรือไม่ หากคุณต้องการแทนที่ rename ด้วยชื่อคำสั่งที่ถูกต้องสำหรับ Linux หากไม่สามารถใช้ Ubuntu หรือ Linux ที่ได้รับ Debian

ls ls

ใช้งานได้ดีตอนนี้ทั้งหมดเป็นไฟล์. prg ไม่รวม .prog ไฟล์ที่เหลืออยู่ในไดเร็กทอรี

เกิดอะไรขึ้นที่นี่?

เราจะมาพูดคุยกันในสามส่วน

ใน อันดับแรก คุณจะเห็นชื่อคำสั่ง rename (หรือ ls หรือ ls สำหรับการแจกแจงอื่น ๆ )

ที่สาม ล่าสุด ส่วนหนึ่งคือ ^ ซึ่งอธิบาย $ เพื่อดำเนินการกับไฟล์. prog ทั้งหมด

วินาที ส่วนหนึ่งอธิบายถึงงานที่เราต้องการทำในแต่ละชื่อไฟล์ ^ หมายถึงสิ่งทดแทน เทอม 1 (ls) คืออะไร ls จะค้นหาในแต่ละชื่อไฟล์และเทอมที่ 2 (ls) คือสิ่งที่จะถูกแทนที่ด้วย

วิธีบันทึกเค้าโครงเดสก์ท็อป

คำสั่งตรงกลางหรือนิพจน์กลางคือ Perl 'นิพจน์ทั่วไป' และเป็นสิ่งที่ให้ s/ สั่งความน่าเชื่อถือ

การแก้ไขส่วนอื่น ๆ ของชื่อไฟล์

เราได้แก้ไขนามสกุลไฟล์แล้วเรามาเปลี่ยนส่วนอื่น ๆ ของชื่อไฟล์กัน

ในไดเร็กทอรีมีไฟล์ซอร์สโค้ด C จำนวนมาก ชื่อไฟล์ทั้งหมดขึ้นต้นด้วย คำแสลง _. นอกจากนี้เรายังสามารถตรวจสอบได้ด้วย y/

a-z

ที่นี่เราแทนที่สิ่งที่เกิดขึ้นทั้งหมดของ slang_ ด้วย sl_ รูปแบบคำสั่งค่อนข้างคุ้นเคยกับเรา เรากำลังแก้ไขข้อความค้นหาคำที่ใช้แทนและประเภทของไฟล์

A-Z

ที่นี่เรากำลังค้นหาไฟล์. c และกำลังมองหา slang_ เมื่อใดก็ตามที่คุณพบ slang_ ในชื่อไฟล์มันจะถูกแทนที่ด้วย sl_

คุณยังสามารถตรวจสอบผลลัพธ์ของคำสั่งหลังจากทำซ้ำคำสั่ง ls จากด้านบนโดยใช้พารามิเตอร์เดียวกัน:

a-z

การลบบางส่วนของชื่อไฟล์

นอกจากนี้เรายังสามารถลบส่วนหนึ่งของชื่อไฟล์หลังจากแทนที่คำค้นหาโดยไม่มีอะไรเลย

mv oldfile.txt newfile.txt

นอกจากนี้เรายังสามารถดูจากไฟล์ สั่งว่า .ค ไฟล์ทั้งหมดถูกนำหน้าด้วย sl_ ทิ้งไว้ทั้งหมด

เปลี่ยนชื่อ คำสั่งเป็นไปตามรูปแบบเดียวกับที่กล่าวไว้ข้างต้น เราจะค้นหาไฟล์. c คำค้นหาคือ sl_ แต่ไม่มีคำที่ใช้แทน เครื่องหมายแบ็กสแลช '//' สองอันที่ไม่มีอะไรคั่นระหว่างนั้นหมายถึงสตริงว่าง

ls *.txt
สามารถประมวลผลไฟล์. c แต่ละไฟล์ได้ นอกจากนี้ยังค้นหา sl_ ในชื่อไฟล์ หากคุณพบมันคุณสามารถแทนที่ได้โดยไม่มีอะไรเลย หรือมิฉะนั้นคำค้นหาจะถูกลบออก

การใช้งาน

ls *.prog -l
คำสั่งยืนยันว่าคำนำหน้า sl_ ถูกลบออกจากไฟล์. c ทุกไฟล์

จำกัด การแก้ไขเฉพาะบางส่วนของชื่อไฟล์

มาใช้

for f in *.prog; do mv -- '$f' '${f%.prog}.prg'
เพื่อดูไฟล์ที่มีสตริงพารามิเตอร์ในชื่อไฟล์ จากนั้นเราจะใช้ เปลี่ยนชื่อ คำสั่งเพื่อแทนที่สตริงผ่านพารามิเตอร์สตริง นอกจากนี้เรายังใช้ อีกครั้งเพื่อดูเอฟเฟกต์ของไฟล์ เปลี่ยนชื่อ มีคำสั่งกับไฟล์เหล่านั้น

ls *.pr*
for f in *.prog; do mv -- '$f' '${f%.prog}.prg'
sudo apt-get install rename

จากนั้นคุณจะดูไฟล์สี่ไฟล์ที่มี หยุด ในชื่อไฟล์ของพวกเขา param.c, param_one.c และ param_two.c ทั้งหมดมี หยุด ที่ จุดเริ่มต้น ชื่อของพวกเขา third_param.c มี หยุด ที่ ล่าสุด ของชื่อก่อนส่วนขยาย

คุณสามารถค้นหา เปลี่ยนชื่อ คำสั่งสำหรับ param ทุกที่ในชื่อไฟล์ จากนั้นคุณสามารถแทนที่ด้วยพารามิเตอร์ในทุกกรณี

การใช้งาน คำสั่งแสดงให้เราเห็นว่าเกิดอะไรขึ้นกันแน่ ไม่ว่าจะเป็น หยุด อยู่ที่จุดเริ่มต้นหรือท้ายชื่อไฟล์ คุณยังสามารถแทนที่ด้วยไฟล์ พารามิเตอร์.

เราสามารถใช้ metacharacters ของ Perl เพื่อชำระพฤติกรรมของนิพจน์กลางได้ Metacharacters คือสัญลักษณ์ที่แสดงถึงลำดับหรือตำแหน่งของอักขระ ตัวอย่างเช่น

sudo dnf install prename
หมายถึงจุดเริ่มต้นของสตริง (.) หมายถึงอักขระเดี่ยวใด ๆ (นอกเหนือจากอักขระขึ้นบรรทัดใหม่),
sudo pacman -Syu perl-rename
หมายถึงจุดสิ้นสุดของสตริง

นอกจากนี้เรายังใช้จุดเริ่มต้นของอักขระเมตาสตริง (

ls *.prog
) เพื่อ จำกัด การค้นหาของเราไว้ที่จุดเริ่มต้นของชื่อไฟล์

rename 's/.prog/.prg/' *.prog
ls *.pr*
ls sl*.c
rename 's/slang_/sl_' *.c

ไฟล์ที่เราเปลี่ยนชื่อมีอยู่ในรายการก่อนหน้านี้ นอกจากนี้เราสามารถดูพารามิเตอร์สตริงได้ที่จุดเริ่มต้นของ 3 ชื่อไฟล์และอยู่ที่ท้ายชื่อไฟล์ใดชื่อหนึ่ง

ของเรา เปลี่ยนชื่อ คำสั่งใช้จุดเริ่มต้นของตัวละครบรรทัด (^) ก่อนพารามิเตอร์ข้อความค้นหา อธิบายว่าให้พิจารณาคำค้นหาเพื่อดูว่าเป็นจุดเริ่มต้นของชื่อไฟล์หรือไม่ พารามิเตอร์สตริงการค้นหาจะถูกหลีกเลี่ยงหากอยู่ที่อื่นในชื่อไฟล์

เมื่อมองด้วย

ls sl*.c
เราจะสามารถดูได้ว่าชื่อไฟล์ที่มีพารามิเตอร์อยู่ที่ไฟล์ ล่าสุด ของชื่อไฟล์ไม่มีการเปลี่ยนแปลง แต่ชื่อไฟล์ทั้งสามมีพารามิเตอร์ที่ จุดเริ่มต้น ของชื่อที่มีสตริงการค้นหาถูกแทนที่ด้วยค่าคำที่ใช้แทน

เปลี่ยนชื่อ อำนาจอยู่ในอำนาจของ Perl

มองด้วยการจัดกลุ่ม

ต่อไปนี้เป็นกรณีที่คุณอาจมีไฟล์ที่มีสตริงเดียวกันในชื่อ สตริงเหล่านี้ไม่เหมือนกันทุกประการดังนั้นคุณเพียงแค่มองหาและการแทนที่ไม่สามารถทำงานได้ที่นี่

ในตัวอย่างนี้เราใช้

ls *.c rename 's/sl_//' *.c ls *.c
เพื่อดูว่าไฟล์ใดที่เรามีที่ขึ้นต้นด้วย str นอกจากนี้ยังมีสองคนคือ string.c และ strale.c นอกจากนี้เรายังสามารถเปลี่ยนชื่อสตริงทั้งสองได้หลังจากใช้วิธีการที่เรียกว่าการจัดกลุ่ม

นิพจน์กลางของ เปลี่ยนชื่อ คำสั่งจะค้นหาสตริงภายในชื่อไฟล์ที่มีลำดับอักขระ ริ้ว หรือ สเตรนจ์ ลำดับเหล่านี้ตามด้วย ng หรืออีกวิธีหนึ่งคือข้อความค้นหาของเราจะมองหาสตริง และ แปลก ระยะการแทนที่คือ ปัง.

ls *param*
rename 's/param/parameter' *.c
ls *param*

หลังจากใช้

ls *param*.c
อีกครั้งยืนยันว่า string.c กลายเป็น bang.c แล้วตอนนี้ strale.c เป็น bangle.c

ใช้คำสั่งเปลี่ยนชื่อด้วยการแปล

เปลี่ยนชื่อ คำสั่งดำเนินการทั้งหมดกับชื่อไฟล์ที่เรียกว่าการแปล นี่คือตัวอย่างของการแปลที่บังคับให้ชุดชื่อไฟล์เป็นตัวพิมพ์ใหญ่

ใน เปลี่ยนชื่อ คำสั่งที่ระบุด้านล่างแจ้งให้ทราบว่าเราไม่ได้ใช้

rename 's/^parameter/value/' *.c
ในการเริ่มต้นนิพจน์กลางเรากำลังใช้
ls *param*.c
อธิบายว่าคำสั่งไม่สามารถทำการทดแทนได้ เรากำลังดำเนินการแปล

ระยะ

ls value*.c
เป็นนิพจน์ Perl หมายความว่าอักขระตัวพิมพ์เล็กทั้งหมดในลำดับจาก a ถึง z แต่ระยะ
ls str*.c
แทนตัวอักษรตัวพิมพ์ใหญ่ทั้งหมดในลำดับจาก A ถึง Z

นิพจน์กลางในคำสั่งนี้สามารถถอดความได้ราวกับว่าพบตัวอักษรพิมพ์เล็กจาก a ถึง z ในชื่อไฟล์ แทนที่โดยใช้อักขระที่เกี่ยวข้องจากลำดับของอักขระตัวพิมพ์ใหญ่จาก A ถึง Z

หากคุณต้องการบังคับให้ชื่อไฟล์ของไฟล์. prg ทั้งหมดเป็นตัวพิมพ์ใหญ่ให้ใช้คำสั่งนี้:

เปลี่ยนชื่อ 'y / a-z / A-Z /' * .prg

rename 's/(stri|stra)ng/bang/' *.c

คำสั่ง

ls ban*.c
แสดงให้เราเห็นว่าทั้งหมด .prg ตอนนี้ไฟล์นามสกุลเป็นตัวพิมพ์ใหญ่ นอกจากนี้เพื่อให้ถูกต้องอย่างเคร่งครัดก็ไม่ได้ .prg ไฟล์อีกต่อไป ก็คือไฟล์. PRG ตรวจสอบให้แน่ใจว่า Linux คำนึงถึงขนาดตัวพิมพ์

นอกจากนี้เรายังสามารถย้อนกลับคำสั่งสุดท้ายนั้นได้หลังจากกลับไปที่ตำแหน่งของ

ls *.PRG
และคำศัพท์ A-Z ในนิพจน์กลาง

เปลี่ยนชื่อ 'y / A-Z / a-z /' * .PRG

ls * .prg

คุณไม่สามารถเรียนรู้ Perl ได้ในห้านาที

การจับกับ Perl นั้นใช้เวลาได้ดี แต่ในการเริ่มต้นใช้ความสามารถในการประหยัดเวลาของไฟล์ เปลี่ยนชื่อ คำสั่งคุณไม่ได้มีความรู้เกี่ยวกับ Perl มากนักเพื่อเก็บเกี่ยวความได้เปรียบในอำนาจ

สรุป:

ข้อมูลทั้งหมดเกี่ยวกับ 'ใช้เปลี่ยนชื่อ Command บน Linux' คุณมีความคิดเห็นอย่างไรเกี่ยวกับเรื่องนี้? หากคุณต้องการแบ่งปันวิธีการหรือเคล็ดลับอื่น ๆ เกี่ยวกับบทความโปรดแจ้งให้เราทราบด้านล่าง สำหรับข้อสงสัยและคำถามเพิ่มเติมโปรดแจ้งให้เราทราบในส่วนความคิดเห็นด้านล่าง!

ยังอ่าน: