คำถามติดแท็ก patterns

1
เราจะระบุรูปแบบการเพิกเฉยหลายรูปแบบสำหรับคำสั่ง 'tree' ได้อย่างไร
ฉันต้องการพิมพ์โครงสร้างไดเรกทอรีของระบบการผลิตของเราและฉันต้องการลบบางไดเรกทอรีออกจากต้นไม้หรือไม่ เราจะระบุรูปแบบการเพิกเฉยหลายtreeคำสั่งได้อย่างไร

1
รูปแบบ. gitignore เทียบเท่ากับ regex (ใหญ่ | เล็ก) (รัฐ | เมือง) - [0-9] * \. csv
ฉันมี regex ฉันติดอยู่ในของฉัน.gitignoreคล้ายกับ: (Big|Small)(State|City)-[0-9]*\.csv มันไม่ได้ทำงานเพื่อให้ผมทดสอบกับRegexLab.NET จากนั้นผมก็พบgitignoreหน้าคนที่ทำให้ฉันได้เรียนรู้ว่า gitignore ไม่ได้ใช้ regexes แต่fnmatch (3) อย่างไรก็ตาม fnmatch มันดูเหมือนจะไม่เท่ากับกลุ่มจับภาพ สิ่งนี้เป็นไปได้หรือฉันต้องการแบ่งเป็นสามบรรทัด?

1
echo [9876543210] แสดง 1 4 5 6 …ทำไม?
โปรดอธิบายว่าทำไม 1 4 5 6 แสดงเป็นคำสั่ง echo สี่ครั้งล่าสุด ฉันตีมันโดยบังเอิญครั้งเดียว แต่ตอนนี้ฉันอยากรู้ว่าทำไมพฤติกรรมนี้เกิดขึ้น ข้อความเหล่านี้ทำงานได้ตามที่คาดไว้ (สำหรับฉัน) $ echo [ 9876543210 ] [ 9876543210 ] $ echo [237890] [237890] ข้อความสะท้อนเหล่านี้แสดงอย่างต่อเนื่อง 1 4 5 6. มีอะไรพิเศษเกี่ยวกับตัวเลขเหล่านี้หรือไม่? $ echo [9876543210] 1 4 5 6 $ echo [abcd9876543210ghi] 1 4 5 6 $ echo [-123456-] 1 4 5 …

4
รายการไฟล์ที่ตรงกับรูปแบบ แต่ไม่สนใจไฟล์ที่ตรงกับรูปแบบอื่น?
สมมติว่าฉันมีไดเรกทอรีที่มีไฟล์ a1, a2, a3, b1, b2, b3 ฉันเพียงต้องการให้ตรงกับไฟล์ที่เริ่มต้นด้วยแต่ไม่ได้มีa 3ฉันพยายามls -I "*3" *a*แต่มันกลับแม้ว่าฉันไม่ต้องการให้ตรงกับa1 a2 a3 a3เป็นไปได้ด้วยlsหรือไม่
12 linux  bash  ls  patterns 

2
วิธีการใช้ตรรกะหรือในการค้นหา?
ใน bash shell lsสามารถใช้ฟังก์ชัน OR แบบลอจิคัลหรือผ่าน (แน่นอนฉันสามารถทำได้ls name1 name2แต่ตัวอย่างจริงของฉันซับซ้อนกว่า): ls @(name1|name2) มีวิธีการทำเช่นนี้โดยใช้find? การปฏิบัติที่ไร้เดียงสาของฉัน: find . -maxdepth 1 -name @("name1"|"name2") ไม่ทำงาน (มันไม่มีผลอะไร)
12 find  ls  patterns 

3
ค้นหาไฟล์ที่ลงท้ายด้วยตัวเลข
ฉันกำลังพยายามสร้างสคริปต์สำรองในขณะที่ล็อกไฟล์มีขนาดใหญ่ขึ้นเรื่อย ๆ สิ่งที่ฉันมีคือจัดการไฟล์ปัจจุบัน (เช่นsecureไฟล์ใน/var/log/) และลบเนื้อหาออกจากไฟล์นั้น แต่มีบางไฟล์ที่มีชื่อเช่นนี้secure.1, secure.2และทั้งหมดนี้ผมชอบที่จะนับพวกเขาและถ้าตัวเลขเป็นใหญ่แล้ว2จะเก็บพวกเขาทั้งหมด ฉันไม่พบวิธีการค้นหาไฟล์นี้หรือนับพวกเขา ความคิดแรกที่เกิดขึ้นกับฉันคือ: find /var/log/ -name *.1 | wc -l และสิ่งนี้จะพิมพ์เสมอ1เนื่องจากมีไฟล์secure.1เดียว ฉันจะนับเช่นเดียวกับในการวนรอบที่ฉันสามารถระบุช่วงของจำนวนเช่น{1..5}หรือคล้ายกันได้ มีวิธีการแยกไฟล์นี้และทำให้พวกเขาเป็นหนึ่งและพวกเขาสำรองหรือลบหรือสิ่งที่เคย ... หรือก่อนอื่นฉันจะหาหมายเลขทั้งหมดนี้ที่ลงท้ายด้วยหมายเลข

1
จะค้นหาไฟล์ที่มีบรรทัดใหม่ในชื่อไฟล์ได้อย่างไร
ฉันพยายามค้นหาไฟล์ที่มีบรรทัดใหม่ในชื่อไฟล์ แต่ฉันไม่สามารถคิดได้ว่าจะใช้รูปแบบใด ผลงานดังต่อไปนี้ แต่ไม่มีประโยชน์มากถ้าฉันต้องการใช้ในโค้ดที่เยื้อง find . -name '* *' ฉันลองสองสิ่งนี้และพวกเขาประสบความสำเร็จในการค้นหาชื่อไฟล์ที่มีตัวอักษรn : find . -name '*\n*' find . -name "*\n*" จากนั้นฉันก็พบวิธีเขียนลำดับ backslash escape และลองสิ่งนี้: find . -name "*$'\n'*" แต่นั่นไม่พบอะไรเลย ฉันจะเขียนรูปแบบได้อย่างไร
10 shell  find  patterns 

5
การจับคู่รูปแบบกับชื่อพา ธ ใน bash
ฉันต้องการดำเนินการกับรายการไดเรกทอรีย่อยในไดเรกทอรี พิจารณา: for x in x86-headers/*/C/populate.sh; do echo $x; done สิ่งนี้จะช่วยให้ x86-headers/elf/C/populate.sh x86-headers/gl/C/populate.sh x86-headers/gmp/C/populate.sh x86-headers/gnome2/C/populate.sh x86-headers/gtk2/C/populate.sh x86-headers/jni/C/populate.sh x86-headers/libc/C/populate.sh แต่ฉันต้องการค่าที่สอดคล้องกับส่วนที่สองของเส้นทาง elf, glฯลฯ x86-headersฉันรู้วิธีการเปลื้องผ้าชั้นนำ for x in x86-headers/*/C/populate.sh; do i=${x##x86-headers/}; echo $i; done ซึ่งจะช่วยให้ elf/C/populate.sh gl/C/populate.sh gmp/C/populate.sh gnome2/C/populate.sh gtk2/C/populate.sh jni/C/populate.sh libc/C/populate.sh ฉันรู้วิธีถอดคำศัพท์ในภายหลังในเส้นทางด้วย เช่นลงไปหนึ่งระดับ: cd x86-headers for x in */C/populate.sh; do i=${x%%/*}; echo …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.