จะค้นหาไฟล์ที่มีบรรทัดใหม่ในชื่อไฟล์ได้อย่างไร


10

ฉันพยายามค้นหาไฟล์ที่มีบรรทัดใหม่ในชื่อไฟล์ แต่ฉันไม่สามารถคิดได้ว่าจะใช้รูปแบบใด

ผลงานดังต่อไปนี้ แต่ไม่มีประโยชน์มากถ้าฉันต้องการใช้ในโค้ดที่เยื้อง

find . -name '*
*'

ฉันลองสองสิ่งนี้และพวกเขาประสบความสำเร็จในการค้นหาชื่อไฟล์ที่มีตัวอักษรn :

find . -name '*\n*'
find . -name "*\n*"

จากนั้นฉันก็พบวิธีเขียนลำดับ backslash escape และลองสิ่งนี้:

find . -name "*$'\n'*"

แต่นั่นไม่พบอะไรเลย ฉันจะเขียนรูปแบบได้อย่างไร

คำตอบ:


13

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

คุณสามารถต่อสตริงเข้าด้วยกันโดยวางมันไว้ด้านหลัง

find . -name '*'$'\n''*'

แต่เพื่อให้อ่านง่ายขึ้นคุณสามารถใช้ANSI-C Quotingสำหรับสตริงทั้งหมด

find . -name $'*\n*'
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.