Android

วิธีการเปลี่ยนชื่อไฟล์และไดเรกทอรีใน linux

เวก้าผับ ฉบับพิเศษ

เวก้าผับ ฉบับพิเศษ

สารบัญ:

Anonim

การเปลี่ยนชื่อไฟล์และไดเรกทอรีเป็นหนึ่งในภารกิจพื้นฐานที่สุดที่คุณต้องทำในระบบ Linux

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

ในบทช่วยสอนนี้เราจะแสดงวิธีใช้คำสั่ง mv และ rename เพื่อเปลี่ยนชื่อไฟล์และไดเรกทอรี

การเปลี่ยนชื่อไฟล์ด้วยคำสั่ง mv

คำสั่ง mv (ย่อมาจาก move) ใช้เพื่อเปลี่ยนชื่อหรือย้ายไฟล์จากที่หนึ่งไปอีกที่หนึ่ง ไวยากรณ์สำหรับคำสั่ง mv มีดังนี้:

mv source destination

source สามารถเป็นหนึ่งไฟล์หรือมากกว่าหรือไดเรกทอรีและ destination สามารถเป็นไฟล์หรือไดเรกทอรีเดียว

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

ตัวอย่างเช่นหากต้องการเปลี่ยนชื่อไฟล์ file1.txt เป็น file2.txt คุณต้องเรียกใช้:

mv file1.txt file2.txt

การเปลี่ยนชื่อหลายไฟล์ด้วยคำสั่ง mv

คำสั่ง mv สามารถเปลี่ยนชื่อได้ครั้งละหนึ่งไฟล์เท่านั้น แต่สามารถใช้ร่วมกับคำสั่งอื่น ๆ เช่น find หรือ Inside bash เป็นเวลาหรือในขณะที่ลูปเพื่อเปลี่ยนชื่อหลายไฟล์

ตัวอย่างต่อไปนี้แสดงวิธีใช้ Bash for loop เพื่อเปลี่ยนชื่อไฟล์ .html ทั้งหมดในไดเรกทอรีปัจจุบันโดยเปลี่ยนนามสกุล .html เป็น .php

for f in *.html; do mv -- "$f" "${f%.html}.php" done

ลองวิเคราะห์โค้ดทีละบรรทัด:

  • บรรทัดแรกสร้างการวนซ้ำแบบวนซ้ำและวนซ้ำตามรายการของไฟล์ทั้งหมดที่มีขอบ .html . บรรทัดที่สองจะใช้กับแต่ละรายการของรายการและย้ายไฟล์ไปที่อันใหม่แทนที่ .html ด้วย .php ส่วน ${file%.html} กำลังใช้การขยายพารามิเตอร์ของเชลล์เพื่อลบส่วน .html ออกจาก filename.done ระบุถึงจุดสิ้นสุดของส่วนลูป

นอกจากนี้เรายังสามารถใช้คำสั่ง mv ร่วมกับการ find เพื่อให้บรรลุเช่นเดียวกับข้างต้น

find. -depth -name "*.html" -exec sh -c 'f="{}"; mv -- "$f" "${f%.html}.php"' ;

คำสั่ง find กำลังส่งไฟล์ทั้งหมดที่ลงท้ายด้วย .html ในไดเร็กทอรีปัจจุบันไปยังคำสั่ง mv ทีละคำสั่งโดยใช้สวิตช์ -exec สตริง {} เป็นชื่อของไฟล์ที่กำลังประมวลผล

ดังที่คุณเห็นจากตัวอย่างด้านบนการเปลี่ยนชื่อไฟล์หลาย ๆ ไฟล์โดยใช้คำสั่ง mv ไม่ใช่เรื่องง่ายเนื่องจากต้องมีความรู้เกี่ยวกับ Bash scripting เป็นอย่างดี

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

คำสั่ง rename จะใช้ในการเปลี่ยนชื่อหลายไฟล์ คำสั่งนี้สูงกว่า mv เนื่องจากต้องการความรู้พื้นฐานของนิพจน์ทั่วไป

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

  • ติดตั้งเปลี่ยนชื่อบน Ubuntu และ Debian

    sudo apt install rename

    ติดตั้งเปลี่ยนชื่อบน CentOS และ Fedora

    sudo yum install prename

    ติดตั้งเปลี่ยนชื่อบน Arch Linux

    yay perl-rename ## or yaourt -S perl-rename

ไวยากรณ์สำหรับคำสั่ง rename เป็นดังนี้:

rename perlexpr files

คำสั่ง rename จะเปลี่ยนชื่อ files ทั้งหมดตามการแสดงออกปกติ perlexpr ระบุ คุณสามารถเกี่ยวกับการแสดงออกปกติ Perl ที่นี่

ตัวอย่างเช่นคำสั่งต่อไปนี้จะเปลี่ยนไฟล์ทั้งหมดด้วยนามสกุล .html เป็น .php :

rename 's/.html/.php/' *.html

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

rename -n 's/.html/.php/' *.html

ผลลัพธ์จะมีลักษณะดังนี้:

rename(file-90.html, file-90.php) rename(file-91.html, file-91.php) rename(file-92.html, file-92.php) rename(file-93.html, file-93.php) rename(file-94.html, file-94.php)

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

rename -f 's/.html/.php/' *.html

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

  • แทนที่ช่องว่างในชื่อไฟล์ด้วยเครื่องหมายขีดล่าง

    rename 'y/ /_/' *

    แปลงชื่อไฟล์เป็นตัวพิมพ์เล็ก

    rename 'y/AZ/az/' *

    แปลงชื่อไฟล์เป็นตัวพิมพ์ใหญ่

    rename 'y/az/AZ/' *

ข้อสรุป

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

เปลี่ยนชื่อสถานี mv