Score:5

วิธีใช้อาร์กิวเมนต์บรรทัดคำสั่งเพื่อค้นหาไฟล์ .txt ที่มีชื่อสามัญ

ธง us

ฉันมีหลายไฟล์ในไดเร็กทอรีที่เรียกว่า ไฟล์. ฉันต้องอ่านไฟล์ .txt แต่ละไฟล์จากไดเร็กทอรีนี้:

abc123.txt
abc234.txt
abc345.txt
abc.txt
def123.txt
def234.txt
def345.txt

ตัวอย่างเช่น เมื่อฉันพิมพ์ ./filter.sh abc ในเทอร์มินัลก็จะค้นหา .txt ไฟล์ที่มีชื่อ เอบีซี.

#!/bin/bash
 
อินพุต 1 = 1 ดอลลาร์


ค้นหา ./files -type f -name "*$input1*.txt" 

ผลลัพธ์ของฉันมีลักษณะเช่นนี้

./files/abc345.txt
./files/abc234.txt
./files/abc123.txt
./files/abc.txt

ฉันทำถูกต้องหรือไม่ และเป็นไปได้ไหมที่จะไม่แสดง ./files/ ในผลลัพธ์? และเหตุใดผลลัพธ์ของฉันจึงแสดง abc345, abc234, abc123 แทน abc123, abc234, abc345?

Score:9
ธง jp
  • ใช่ มันเป็นสิ่งที่ดี แต่เมื่อคุ้นเคยกันมากขึ้น หาคุณจะทำได้โดยตรงบนบรรทัดคำสั่ง (แทนที่จะผ่าน shellscript) ฉันใช้ shellscripts มาก แต่ส่วนใหญ่สำหรับงานที่ใหญ่กว่า (หลายบรรทัดคำสั่ง)

  • คุณสามารถตัดจุดเริ่มต้นที่พบ:

    ค้นหา ./files -type f -name "*$input1*.txt" -printf "%P\n"
    
  • ในที่สุดคุณสามารถจัดเรียงไฟล์ได้ในภายหลัง:

    ค้นหา ./files -type f -name "*$input1*.txt" -printf "%P\n" | เรียงลำดับ
    
  • หากมีจำนวนน้อยหรือไฟล์ขนาดเล็ก คุณสามารถเขียนเนื้อหาไปยังเทอร์มินัลด้วย

    ค้นหา ./files -type f -name "*$input1*.txt" -exec echo "--- {}:" \; -exec แมว {} \;
    

    ผลลัพธ์สามารถเปลี่ยนเส้นทางไปยังไฟล์โดย > output.txt

    ค้นหา ./files -type f -name "*$input1*.txt" -exec echo "--- {}:" \; -exec แมว {} \; > output.txt
    

    เลื่อนแนวนอนเพื่อดูจุดสิ้นสุดของบรรทัดนี้

  • หากมีไฟล์จำนวนมากหรือไฟล์ขนาดใหญ่ การดูไฟล์ในโปรแกรมแก้ไขข้อความที่คุณชื่นชอบอาจน้อยกว่าหรืออาจดีกว่า

    ค้นหา ./files -type f -name "*$input1*.txt" -exec น้อยกว่า {} \;
    

    และออกด้วย 'q' จากค่าน้อยระหว่างแต่ละไฟล์

  • หา เทียบกับ

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

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

user15907922 avatar
us flag
อ่า ขอบคุณ มันได้ผล! ฉันขอทราบวิธีอ่านหรือพิมพ์เนื้อหาจากไฟล์ txt เหล่านั้นได้ไหม ผมลองทำมาประมาณ 1 วันแล้วยังคิดไม่ออก
vanadium avatar
cn flag
สำหรับประเด็นที่ 1 หากเป็นงานที่เกิดซ้ำ การสร้างเชลล์สคริปต์ถือเป็นแนวปฏิบัติที่ดี
sudodus avatar
jp flag
@ user15907922 อ่านหรือพิมพ์หมายความว่าอย่างไร คุณต้องการพิมพ์ทุกอย่างไปยังเทอร์มินัลหรือดูในเครื่องมือบางอย่างหรือพิมพ์ไปยังเครื่องพิมพ์กระดาษหรือไม่
user15907922 avatar
us flag
พิมพ์เนื้อหาในไฟล์ข้อความไปยังเทอร์มินัล
sudodus avatar
jp flag
@ user15907922 ฉันแนะนำสองสามวิธีในการดูไฟล์ หนึ่งในนั้นจะได้ผลหรือไม่
user15907922 avatar
us flag
@sudodus ใช่มันใช้งานได้ ขอบคุณมาก! และฉันขอทราบวิธีคัดลอกเนื้อหาเหล่านั้นในไฟล์ .txt ไปยังไฟล์ .txt อื่นได้หรือไม่ สมมติว่าคัดลอกไปที่ copy.txt
sudodus avatar
jp flag
คุณสามารถ **เปลี่ยนเส้นทาง** เอาต์พุตไปยังเทอร์มินัลไปยังไฟล์ที่มี `>` ฉันจะแสดงโดยการแก้ไขคำตอบ
user15907922 avatar
us flag
ได้ผล! ขอบคุณทีช่วยฉัน!
Score:5
ธง in

คุณสามารถทำได้และทำตามคำแนะนำ @sudodus เพื่อปรับปรุงผลลัพธ์

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

ls -1 ไฟล์/abc*

ในการรับชื่อไดเร็กทอรี:

(ไฟล์ซีดี && ls -1 abc*)
user15907922 avatar
us flag
แต่จะคัดลอกเนื้อหาเหล่านั้นในไฟล์ txt ไปยังไฟล์ .txt อื่นได้อย่างไร
pLumo avatar
in flag
คุณหมายความว่าอะไร? ฉันไม่เห็นส่วนนี้ในคำถามของคุณ คุณต้องการทำ `cat files/abc*` หรือ `less files/abc*` หรือไม่
user15907922 avatar
us flag
ไม่เป็นไรฉันแก้ไขได้ ขอบคุณสำหรับการช่วยเหลือ!

โพสต์คำตอบ

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