Bash วนซ้ำไฟล์ในไดเร็กทอรี

Bash Loop Through Files Directory



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

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







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



$ทุบตี--รุ่น



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





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

$mkdirabc



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

$ซีดีabc

หลังจากไปที่ไดเร็กทอรีแล้ว ให้สร้างไฟล์บางไฟล์โดยใช้คำสั่งสัมผัส

$สัมผัสfile1.txt

มีการใช้วิธีการมากมายในการสร้างไฟล์ใน Ubuntu นอกจากคำสั่ง touch แล้ว เรายังใช้คำสั่ง echo ที่นี่เพื่อสร้างไฟล์และเพิ่มเนื้อหาในคำสั่งเดียว:

$โยนออกLinux, ubuntu, Postgresql>file7.txt

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

$สัมผัสไฟล์-{1..8}.txt

โดยใช้คำสั่งนี้ในไฟล์ใหม่ของนามสกุล .txt จะถูกสร้างขึ้นโดยใช้คำสั่งเดียว

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

$สำหรับ ไฟล์ ใน *;ทำ โยนออก $ไฟล์;เสร็จแล้ว

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

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

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

$สำหรับ ไฟล์ ใน *;ทำ โยนออก -2 $ไฟล์ Linux Ubuntu> $ไฟล์;เสร็จแล้ว

หลังจากดำเนินการคำสั่ง ค่าจะถูกป้อนในแต่ละไฟล์ที่เราสร้างขึ้น เมื่อใช้กับ echo แฟล็ก '-e' จะรักษาบรรทัดใหม่ในไฟล์ หากต้องการดูข้อมูลที่ป้อน คุณสามารถไปที่ไดเร็กทอรี 'abc' ตอนนี้เปิดไฟล์ข้อความใด ๆ ไฟล์ไม่ว่างเปล่าอีกต่อไป

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

$สำหรับ ไฟล์ ใน *;ทำ แมว $ไฟล์;เสร็จแล้ว

คำสั่ง Cat ใช้เพื่อดึงข้อมูลที่มีอยู่ในไฟล์ทั้งหมดของไดเร็กทอรี

ทั้งขั้นตอนการป้อนข้อมูลและการดึงข้อมูลสามารถทำได้โดยใช้คำสั่งเดียว

$สำหรับ ไฟล์ ใน *;ทำ โยนออก-และ$ไฟล์ bash การเขียนโปรแกรม> $ไฟล์;แมว $ไฟล์;เสร็จแล้ว

ขั้นตอนแรกคือการเขียนข้อมูลลงในไฟล์แล้วแสดงผล เมื่อคุณรันคำสั่ง ผลลัพธ์จะเป็นดังนี้:

แต่ละไฟล์มีค่าเท่ากัน นี่เป็นเพราะลูป 'for'

เราทราบลูปสำหรับการดึงข้อมูลและการแทรกค่า ฯลฯ แต่การวนซ้ำยังใช้เพื่อสร้างข้อมูลสำรองอีกด้วย ไฟล์เหล่านี้มีนามสกุล .bak ต่อท้าย ตอนนี้รันคำสั่ง backup ในเชลล์เพื่อดูข้อมูลสำรองของแต่ละไฟล์

$สำหรับ ไฟล์ ใน *;ทำ cp $ไฟล์ $ไฟล์.ด้านหลัง;เสร็จแล้ว;

คีย์เวิร์ด cp ใช้เพื่อสำรองไฟล์ทั้งหมด ตอนนี้เพื่อดูไฟล์ที่ใช้คำสั่งนี้ เราใช้คำสั่งเป็น:

$ลส- NS

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

หากเราต้องการไฟล์ jpeg เท่านั้น เราจะใช้สิ่งนี้ในคำสั่ง

$สำหรับ ไฟล์ ใน *.jpeg;ทำ โยนออก $ไฟล์;เสร็จแล้ว

นี้จะนำชื่อภาพเท่านั้น

การค้นหาอย่างง่ายยังสามารถทำหน้าที่เดียวกันได้ มันจะดึงไฟล์ทั้งหมดที่มีนามสกุล .sh

$หา. - ชื่อ*NS

เราจะใช้คีย์เวิร์ด find ใน for a loop

$สำหรับ ไฟล์ ใน *;ทำหา. ไฟล์.*;เสร็จแล้ว

สิ่งนี้จะนำไฟล์ทั้งหมดไปยังไดเร็กทอรีปัจจุบัน มีนามสกุล .bak, .jpeg, .txt เป็นต้น

ตอนนี้ ถ้าคุณต้องการดูชื่อไฟล์ไดเร็กทอรีทั้งหมดและข้อมูลภายใน การทำเช่นนี้จะทำโดยลูป 'for'

$สำหรับ ไฟล์ ใน *;ทำ ไฟล์ $ไฟล์;เสร็จแล้ว

บทสรุป

การวนซ้ำไฟล์ในไดเร็กทอรีใดๆ ไม่ใช่เรื่องยากอีกต่อไป อย่างที่เราทราบกันดีอยู่แล้ว โดยใช้ลูปใน Bash และดำเนินการบนระบบปฏิบัติการ Linux บทช่วยสอนนี้เป็นคู่มือฉบับสมบูรณ์ในการสร้าง เข้าถึง และดำเนินการกับไดเร็กทอรีโดยใช้ลูป 'for'