à¹à¸§à¸à¹à¸²à¸à¸±à¸ à¸à¸à¸±à¸à¸à¸´à¹à¸¨à¸©
สารบัญ:
- การเปลี่ยนชื่อไฟล์ด้วยคำสั่ง mv
- การเปลี่ยนชื่อหลายไฟล์ด้วยคำสั่ง mv
- การเปลี่ยนชื่อไฟล์ด้วยคำสั่งเปลี่ยนชื่อ
- ข้อสรุป
การเปลี่ยนชื่อไฟล์และไดเรกทอรีเป็นหนึ่งในภารกิจพื้นฐานที่สุดที่คุณต้องทำในระบบ 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
คำสั่ง
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
Linux Foundation กำลังพยายามที่จะทำให้ผู้ใช้ขั้นปลายของ Linux "end-end" มีส่วนร่วมมากขึ้นในการพัฒนาเคอร์เนล

Linux Foundation กำลังเตรียมงาน Summit User Summit ครั้งแรกในกรุง New York ในวันจันทร์ที่ผ่านมาเพื่อพยายามให้นักพัฒนาเคอร์เนล Linux ได้ติดต่อกับผู้ใช้ที่สถาบันวอลล์สตรีทและ บริษัท ใหญ่อื่น ๆ
Canonical อาจไม่ได้เผยแพร่การเปิดตัวอัลฟาอย่างเป็นทางการสำหรับเมนบอร์ด Ubuntu Linux 13.04 OS เมื่อสัปดาห์ที่แล้วหรือเป็นรายการคุณลักษณะใหม่ ๆ ที่เกี่ยวข้อง แต่เมื่อวันศุกร์ที่ผ่านมา บริษัท ได้เปิดเผยรายละเอียดบางอย่างเกี่ยวกับสิ่งที่จะเกิดขึ้นในเวอร์ชันถัดไปนี้ Linux

ในความเป็นจริง Cristian Parrino รองประธานฝ่ายบริการออนไลน์ของ Canonical ได้กล่าวถึงคุณลักษณะใหม่ ๆ สามอย่างในโพสต์ในบล็อก Canonical
ด้วยการกระจาย Linux ที่ยอดเยี่ยมในปัจจุบันนี้คุณสามารถมุ่งเน้นเฉพาะบางส่วนที่ครองพาดหัวข่าวเช่น Ubuntu Linux, Linux Mint, Fedora และ Mageia ลินุกซ์เพื่อชื่อเพียงไม่กี่

การสแกน DistroWatch เป็นวิธีที่ดีในการสร้างมุมมองที่สมบูรณ์แบบให้เต็มไปด้วยรายละเอียดและประกาศเกี่ยวกับคนอื่น ๆ นับไม่ถ้วนที่ออกไปที่นั่น แต่ทุกครั้งที่มีการกระโดดออกจากข่าวเป็น โดยเฉพาะอย่างยิ่งที่น่าสนใจ