วิธีเปลี่ยนชื่อไดเร็กทอรีบน Linux

เผยแพร่แล้ว: 2022-06-16
แล็ปท็อป Linux แสดง bash prompt
fatmawati achmad zaenuri/Shutterstock.com

การเปลี่ยนชื่อไดเร็กทอรีใน Linux เป็นเรื่องง่าย และมีหลายวิธีในการดำเนินการ จากการเปลี่ยนชื่อไดเร็กทอรีเดียวเป็นการค้นหาและการเปลี่ยนชื่อไดเร็กทอรีหลายรายการ มีวิธีดำเนินการดังนี้

ข้อมูลของคุณปลอดภัย

การเปลี่ยนชื่อไดเร็กทอรีเป็นสิ่งที่เราทุกคนต้องทำเป็นครั้งคราว

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

ไฟล์คอมพิวเตอร์และโฟลเดอร์คืออะไร?
ที่เกี่ยวข้อง ไฟล์และโฟลเดอร์คอมพิวเตอร์คืออะไร?

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

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

การใช้คำสั่ง mv

ในกรณีที่ตรงไปตรงมาที่สุด ทั้งหมดที่เราต้องการคือคำสั่ง mv นี่เป็นส่วนสำคัญของการแจกจ่าย Linux ทุกเครื่อง ดังนั้นจึงไม่ต้องติดตั้งอะไร

โฆษณา

คำสั่ง mv มีอายุมากกว่า 50 ปีในขณะที่เขียน มันมาจากการเริ่มต้นของ Unix เมื่อคำสั่งสั้น ๆ และคลุมเครืออยู่ในสมัย ​​อาจลดจำนวนอักขระที่ต้องส่งผ่านสายอนุกรมที่ช้าจาก teletypes และเทอร์มินัลโง่ไปยังคอมพิวเตอร์จริง

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

มีสองไดเร็กทอรีย่อยในไดเร็กทอรีนี้

 ลส 

แสดงรายการสองไดเรกทอรีย่อย

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

 mv งานเก่า archive-2 

การเปลี่ยนชื่อไดเร็กทอรีด้วย mv

หากไดเร็กทอรีที่คุณต้องการเปลี่ยนชื่อไม่อยู่ในไดเร็กทอรีปัจจุบันของคุณ ให้ระบุพาธและชื่อไดเร็กทอรี

 mv ~/htg/old-work ~/htg/archive-2
 ลส 

การเปลี่ยนชื่อไดเร็กทอรีในไดเร็กทอรีอื่นด้วย mv โดยการระบุพาธบนบรรทัดคำสั่ง

การใช้ไฟล์เบราว์เซอร์

ไฟล์เบราว์เซอร์สามารถเปลี่ยนชื่อไดเร็กทอรีได้ การกดแป้นพิมพ์ในแอปพลิเคชันไฟล์ GNOME คือ F2 การเน้นไดเร็กทอรีและแตะปุ่ม F2 จะเป็นการเปิดกล่องโต้ตอบ "เปลี่ยนชื่อโฟลเดอร์"

การใช้เบราว์เซอร์ fi เพื่อเปลี่ยนชื่อไดเร็กทอรี

โฆษณา

พิมพ์ชื่อใหม่ แล้วคลิกปุ่ม "เปลี่ยนชื่อ" สีเขียว

ระบุชื่อไดเร็กทอรีใหม่ในไฟล์เบราว์เซอร์

ไดเร็กทอรีถูกเปลี่ยนชื่อสำหรับคุณ

ไดเร็กทอรีที่เปลี่ยนชื่อในหน้าต่างเบราเซอร์ไฟล์

มันง่ายอย่างนั้น

เปลี่ยนชื่อคำสั่ง

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

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

เพื่อหลีกเลี่ยงความขัดแย้งของชื่อกับคำสั่ง rename ที่มีอยู่ คำสั่ง Perl rename จะเรียกว่า prename บน Fedora และ perl-rename บน Manjaro บน Ubuntu คำสั่ง rename และ prename เป็นทั้งลิงก์สัญลักษณ์ที่แก้ไขเป็นไบนารีที่เรียกว่า file-rename

ดังนั้นบน Manjaro คำสั่งคุณจะต้องใช้ perl-rename และใน Fedora มันคือ prename บน Ubuntu คุณสามารถใช้ rename หรือ prename

ในการติดตั้ง Perl เปลี่ยนชื่อบน Ubuntu คุณต้องพิมพ์:

 sudo apt ติดตั้ง เปลี่ยนชื่อ 

การติดตั้งการเปลี่ยนชื่อบน Ubuntu

บน Fedora คำสั่งคือ:

 sudo dnf ติดตั้ง prename 

การติดตั้งชื่อเล่นบน Fedora

บน Manjaro แพ็คเกจเรียกว่า perl-rename

 sudo pacman -Sy perl-เปลี่ยนชื่อ 

การติดตั้ง perl-rename บน Manjaro

โฆษณา

ตรวจสอบให้แน่ใจว่าคุณใช้คำสั่งที่เหมาะสมสำหรับการแจกจ่ายของคุณ หากคุณต้องการทำงานผ่านตัวอย่าง

ขั้นตอนแรกด้วยการเปลี่ยนชื่อ

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

ในไดเร็กทอรีของเรา เรามีไดเร็กทอรีอื่นๆ

 ลส 

คอลเล็กชันของไดเร็กทอรีทั้งตัวพิมพ์ใหญ่ ตัวพิมพ์เล็ก และตัวพิมพ์เล็กผสมกัน

ชื่อของพวกมันมีทั้งตัวพิมพ์เล็ก ตัวพิมพ์ใหญ่ และตัวพิมพ์เล็กผสมกัน เราสามารถแปลงทั้งหมดเป็นตัวพิมพ์เล็กด้วยนิพจน์ที่เหมาะสม

 เปลี่ยนชื่อ 'y/AZ/az/' *
 ลส 

การแปลงไดเร็กทอรีเป็นชื่อตัวพิมพ์เล็ก

ขณะนี้ไดเร็กทอรีทั้งหมดเป็นตัวพิมพ์เล็ก ไม่ว่าก่อนหน้านี้จะเป็นตัวพิมพ์ใหญ่ทั้งหมด หรือมีตัวพิมพ์ใหญ่แบบคี่

เวทมนตร์ทั้งหมดมีอยู่ในนิพจน์ นิพจน์ถูกห่อด้วยเครื่องหมายคำพูดเดี่ยว “ ' “ นี่คือสิ่งที่คำสั่งทั้งหมดหมายถึง

  • y : นี่หมายถึงการค้นหาอักขระใดๆ ในช่วงแรกของอักขระ และแทนที่อักขระที่เกี่ยวข้องจากอักขระช่วงที่สอง
  • /AZ/az/ : ช่วงแรกคือตัวอักษรทั้งหมดตั้งแต่ "A" ถึง "Z" และช่วงที่สองคืออักขระทั้งหมดตั้งแต่ "a" ถึง "z"
  • * : เครื่องหมายดอกจันหมายถึงใช้กับไดเร็กทอรีทั้งหมด
โฆษณา

กล่าวอีกนัยหนึ่ง คำสั่งอ่านว่า "สำหรับไดเร็กทอรีทั้งหมด ให้สลับอักษรตัวพิมพ์ใหญ่สำหรับอักษรตัวพิมพ์เล็กที่เทียบเท่ากัน"

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

 เปลี่ยนชื่อ 's/gamma/epsilon-2/' *
 ลส 

การเปลี่ยนชื่อไดเร็กทอรีเดียวด้วยการเปลี่ยนชื่อ

“s” ในนิพจน์นี้หมายถึงการแทนที่ จะตรวจสอบแต่ละไดเร็กทอรีเพื่อดูว่าชื่อ "gamma" หรือไม่ หากใช่ จะแทนที่ด้วย “epsilon-2” ระวังด้วยว่าสิ่งนี้จะตรงกับไดเร็กทอรีที่เรียกว่า "gamma-zeta" เช่นเปลี่ยนชื่อเป็น "epsilon-2-zeta"

เราสามารถหลีกเลี่ยงสิ่งนี้ได้โดยการเพิ่มอักขระเริ่มต้นของสตริง “ ^ ” และจุดสิ้นสุดของ อักขระเมตา ของสตริง “ $ ” ลงในประโยคแรกของนิพจน์

 ลส
 เปลี่ยนชื่อ 's/^gamma$/epsilon-2/' *
 ลส 

การจำกัดการดำเนินการเปลี่ยนชื่อเป็นชื่อไดเร็กทอรีทั้งหมดเท่านั้น

ซึ่งจะทำให้ไดเร็กทอรี "epsilon-2" ไม่ถูกแตะต้อง

ใช้เปลี่ยนชื่อด้วยคำสั่งอื่นๆ

เราสามารถใช้คำสั่งอื่นเพื่อค้นหาไดเร็กทอรีที่เราต้องการ rename หากเรามีชุดของไดเร็กทอรีที่ซ้อนกันและเราต้องการเปลี่ยนชื่อที่ลงท้ายด้วย "-old" เพื่อให้ลงท้ายด้วย "-archive" เราสามารถทำได้โดยใช้ find และ xargs

วิธีใช้คำสั่ง xargs บน Linux
วิธีใช้คำสั่ง xargs บน Linux

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

คำสั่งของเรามีลักษณะดังนี้:

 หา . -deep -type d -name "*-เก่า" | xargs -r เปลี่ยนชื่อ "s/old$/archive/"
  • . : เราบอกให้ find เริ่มค้นหาในไดเร็กทอรีปัจจุบัน แน่นอนว่านี่อาจเป็นเส้นทางใดก็ได้
  • -deep : ใช้การค้นหาเชิงลึกเป็นอันดับแรก ซึ่งหมายความว่าเนื้อหาของไดเรกทอรีย่อยที่ซ้อนกันอยู่ลึกกว่าจะได้รับการประมวลผลก่อนไดเรกทอรีที่สูงกว่า
  • -type d : ค้นหาไดเร็กทอรี ไม่ใช่ไฟล์
  • -name “*-old” : เบาะแสการค้นหา เรากำลังมองหาไดเร็กทอรีที่มีชื่อลงท้ายด้วย “-old”
  • | : เรากำลังวางเอาต์พุตจาก find ลงในคำสั่ง xargs
  • xargs -r : -r (ไม่มีการรันถ้าว่าง) หมายถึงอย่ารันคำสั่งหากไม่มีไดเร็กทอรีที่ตรงกัน
  • เปลี่ยนชื่อ “s/old$/archive/” : คำสั่ง rename ที่จะเรียกใช้

โครงสร้างไดเร็กทอรีของเรามีลักษณะดังนี้ก่อนคำสั่ง

โครงสร้างไดเร็กทอรีก่อนคำสั่งเปลี่ยนชื่อของเรา

เราเรียกใช้คำสั่งของเรา:

คำสั่งเปลี่ยนชื่อของเราโดยใช้ find, xargs และ rename

โฆษณา

และเราจะเห็นว่าไดเร็กทอรีที่ตรงกันทั้งหมดรวมถึงไดเร็กทอรีที่ซ้อนกันถูกเปลี่ยนชื่อ

โครงสร้างไดเร็กทอรีหลังคำสั่งเปลี่ยนชื่อ

ม้าสำหรับหลักสูตร

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

ที่เกี่ยวข้อง: วิธีจัดการไฟล์จาก Linux Terminal: 11 คำสั่งที่คุณต้องรู้