สมมติว่า "foreign" หมายถึง "ไม่ใช่อักขระ ASCII" จากนั้นคุณสามารถใช้findกับรูปแบบเพื่อค้นหาไฟล์ทั้งหมดที่ไม่มีอักขระ ASCII ที่พิมพ์ได้ในชื่อ:
LC_ALL=C find . -name '*[! -~]*'
(ช่องว่างเป็นอักขระตัวแรกที่พิมพ์ได้ที่อยู่ในรายการhttp://www.asciitable.com/ซึ่ง~เป็นอักขระตัวสุดท้าย)
คำแนะนำสำหรับการLC_ALL=Cเป็นสิ่งจำเป็น (ที่จริงLC_CTYPE=CและLC_COLLATE=C) มิฉะนั้นช่วงตัวอักษรที่ถูกตีความอย่างไม่ถูกต้อง glob(7)ดูเพิ่มเติมหน้าคู่มือ เนื่องจากLC_ALL=Cสาเหตุfindที่แปลสตริงเป็น ASCII มันจะพิมพ์อักขระหลายไบต์ (เช่นπ) เป็นเครื่องหมายคำถาม ในการแก้ไขปัญหานี้ไปป์ไปยังบางโปรแกรม (เช่นcat) หรือเปลี่ยนเส้นทางไปยังไฟล์
แทนที่จะระบุช่วงอักขระคุณ[:print:]สามารถใช้เพื่อเลือก "อักขระที่พิมพ์ได้" อย่าลืมตั้งค่าโลแคล C หรือคุณมีพฤติกรรมตามอำเภอใจ (ดู)
ตัวอย่าง:
$ touch $(printf '\u03c0') "$(printf 'x\ty')"
$ ls -F
dir/ foo foo.c xrestop-0.4/ xrestop-0.4.tar.gz π
$ find -name '*[! -~]*' # this is broken (LC_COLLATE=en_US.UTF-8)
./x?y
./dir
./π
... (a lot more)
./foo.c
$ LC_ALL=C find . -name '*[! -~]*'
./x?y
./??
$ LC_ALL=C find . -name '*[! -~]*' | cat
./x y
./π
$ LC_ALL=C find . -name '*[![:print:]]*' | cat
./x y
./π