ฉันจะแสดงรายการโฟลเดอร์ที่มีเครื่องหมายขีดล่างก่อนได้อย่างไร


23

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

ตัวอย่างเช่นในโฟลเดอร์ eBooks ของฉัน (ใน Windows) มีลักษณะดังนี้:

_read
      Book1.pdf
      Book2.pdf
_reading
      Book3.pdf
Book4.pdf
Book5.pdf

แต่ใน Nautilus ของ Ubuntu ดูเหมือนว่า:

Book4.pdf
Book5.pdf    
_read
      Book1.pdf
      Book2.pdf
_reading
      Book3.pdf

สิ่งที่เกิดขึ้นคือมันไม่สนใจขีดเส้นใต้อย่างสมบูรณ์และถือว่า "_read" เป็น "อ่าน" และดังนั้นจึงไม่แสดงรายการไว้ในรายการแรกเท่าที่ต้องการ

ฉันได้ลองตั้งค่าตัวแปรสภาพแวดล้อม LC_COLLATE เป็น C สิ่งนี้ช่วยอย่างใดเนื่องจากมันจะแสดงรายการขีดล่างเข้าด้วยกัน แต่ท้ายที่สุดและไม่ใช่ตอนเริ่มต้น

ขอบคุณ


คุณรวมภาพหน้าจอได้ไหม
philshem

อาจเป็นไปได้ซ้ำกับaskubuntu.com/questions/115741/…แม้ว่าฉันคิดว่าคำตอบของ @ maggotbrain นั้นดีกว่าคำตอบที่นำเสนอ
rudivonstaden

คำตอบ:


16

เนื่องจากคุณไม่ได้ระบุภาษาที่คุณใช้อยู่โซลูชันนี้จะถือว่าคุณใช้en_US.UTF-8เป็นค่าเริ่มต้น

คุณสามารถตรวจสอบสิ่งนี้ได้โดยเรียกใช้คำสั่งlocaleจากบรรทัดคำสั่ง ( Ctrl+ Alt+ t)

ตัวอย่างเช่น:

~ $ locale
LANG=en_US.UTF-8
LANGUAGE=en_US
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

ตัวแปรที่มีผลต่อการสั่งซื้อการเรียงลำดับของไฟล์ที่เรียกว่าLC_COLLATE

ตามหน้าช่วยเหลือของ Ubuntuตัวแปร LC_COLLATE จะกำหนด"วิธีเรียงลำดับ (ชื่อไฟล์ ... ) เรียงตามลำดับตัวอักษรการใช้โลแคล" C "หรือ" POSIX "ที่นี่ส่งผลให้เกิด strcmp () - เหมือนกับการเรียงลำดับซึ่งอาจเป็น ดีกว่าไปยังตำแหน่งที่ตั้งเฉพาะภาษา "

การเรียงลำดับจะต้องมีการเปลี่ยนจากการLC_COLLATE="en_US.UTF-8"LC_COLLATE=C

จากบรรทัดรับคำสั่ง ( Ctrl+ Alt+ t) ให้ป้อน:

update-locale LC_COLLATE=C

สำคัญ: คุณต้องเข้าสู่ระบบออกจากระบบของคุณและจากนั้นกลับเข้าสู่ระบบเพื่อให้การเปลี่ยนแปลงมีผลบังคับใช้

การรันlocaleคำสั่งอีกครั้งควรแสดงให้เห็นว่าLC_COLLATEตัวแปรได้รับการเปลี่ยนแปลงเรียบร้อยแล้ว การรันคำสั่งls -lอีกครั้งควรสะท้อนถึงการเปลี่ยนแปลงนี้


1
ฉันได้ตั้งค่า LC_COLLATE เป็น C แล้วตามที่อธิบายไว้ในย่อหน้าสุดท้ายของคำถาม ยังฉันได้รับผลลัพธ์ที่แตกต่างกันทั้งใน terminal และ nautilus explorer และฉันได้รีบูตเครื่องคอมพิวเตอร์ในขณะเดียวกัน ความคิดใด ๆ ที่เกิดขึ้น?
nunos

@nunos คุณมีนามแฝงตั้งไว้lsในของคุณ.bashrcหรือไม่?
Kevin Bowen

@nosos ที่น่าสนใจ คุณกำลังตรวจสอบระบบไฟล์ประเภทใด สถานที่เดียวที่ฉันมีปัญหาเกี่ยวกับls -lการเรียงลำดับอยู่ในไดรฟ์ที่จัดรูปแบบ ntfs ซึ่งดูเหมือนจะไม่ให้เกียรติตัวแปร LC_COLLATE ระบบไฟล์ ext3 ของฉันทั้งหมดดูเหมือนว่าจะเคารพการตั้งค่านั้นโดยใช้คำสั่ง ls เช่นเดียวกับใน Thunar และ Nautilus
Kevin Bowen

นั่นอาจเป็นปัญหาได้ ฉันกำลังใช้ls -lคำสั่งบนไดรฟ์ NTFS เนื่องจากฉันมีระบบบู๊ตคู่กับ windows
nunos

2
update-locale LC_COLLATE=Cไม่ช่วยในการรับโฟลเดอร์ที่มีเครื่องหมายขีดล่างอยู่ด้านบนของรายการที่เรียงหากคุณใช้อักษรตัวใหญ่ที่จุดเริ่มต้นของชื่อโฟลเดอร์ของคุณ!
malisokan

1

caja (และฉันคิดว่า Nautilus มาก่อน) มีตัวเลือกในการตั้งค่าเพื่อเรียงลำดับโฟลเดอร์ก่อนไฟล์ จะช่วยได้ไหม

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