Score:2

จัดเรียงไฟล์ตามชื่อที่มีค่าตัวเลข

ธง ma

ฉันมีไฟล์ในระบบของฉันเช่นนี้ -

-rw-r--r-- 1 abc abcadm 14852497 23 กรกฎาคม 01:11 ABCD_72_3_20210722_163502.csv
-rw-r--r-- 1 abc abcadm 14853145 23 กรกฎาคม 01:11 ABCD_72_1_20210722_163502.csv
-rw-r--r-- 1 abc abcadm 14839699 23 กรกฎาคม 01:11 ABCD_72_2_20210722_163502.csv
-rw-r--r-- 1 abc abcadm 14842673 23 กรกฎาคม 01:11 ABCD_72_5_20210722_163502.csv
-rw-r--r-- 1 abc abcadm 14843811 23 กรกฎาคม 01:11 ABCD_72_4_20210722_163502.csv

ฉันต้องการจัดเรียงไฟล์เหล่านั้นเพื่อพิมพ์ชื่อไฟล์เท่านั้นและมีลักษณะการเรียงลำดับดังนี้:

ABCD_72_1_20210722_163502.csv
ABCD_72_2_20210722_163502.csv
ABCD_72_3_20210722_163502.csv
ABCD_72_4_20210722_163502.csv
ABCD_72_5_20210722_163502.csv

ฉันใช้คำสั่งด้านล่างเพื่อเรียงลำดับจากน้อยไปมากและพิมพ์แค่ชื่อ แต่รายการไม่ได้รับการจัดเรียง

ls -l | ABCD_72_[0-9]*_20210722_163502* | awk '{พิมพ์ $9}' | เรียงลำดับ

โปรดแนะนำฉันที่ฉันผิดหรือทางเลือกอื่น?

Score:2
ธง cn

อันดับแรก อย่าแยกวิเคราะห์ผลลัพธ์ของ . เราสามารถแก้ไขคำตอบได้ สำหรับคำถามอื่น เล็กน้อยเพื่อทำให้ไม่เรียกซ้ำแล้ว ค้นหา ./ -maxความลึก 1 -printf "%f\n"และคุณต้องการให้มันเรียง ดังนั้นไพพ์มันลงไป เรียงลำดับ. คำสั่งสุดท้ายคือ

$ find ./ -maxความลึก 1 -printf "%f\n" | เรียงลำดับ

ตามที่ @Rinzwind ชี้ให้เห็น หากคุณต้องการเรียงลำดับตัวเลข (so 2 มาก่อนก็ได้ 12), เพิ่ม --ตัวเลข-เรียง จนจบคำสั่งทำให้

ค้นหา ./ -maxความลึก 1 -printf "%f\n" | เรียง--เรียงตัวเลข
bac0n avatar
cn flag
สิ่งนี้แบ่ง *ขึ้นบรรทัดใหม่* สามารถทำได้ `-printf %f\0 | จัดเรียง -zn | xargs -0 -n 1`
cocomac avatar
cn flag
@bac0n จากนั้นแก้ไขคำตอบของฉันหรือโพสต์ของคุณเอง ฉันไม่ได้พิจารณาการขึ้นบรรทัดใหม่ เพราะทำไมบางคนถึงมีเส้นตรงในชื่อไฟล์!?
Score:0
ธง hr

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

   n ตั้งค่าตัวเลือก NUMERIC_GLOB_SORT สำหรับรูปแบบปัจจุบัน

(ดู รอบคัดเลือก ภายใต้ การสร้างชื่อไฟล์ ส่วนของ ผู้ชาย zshexpn).

อดีต.

 % พิมพ์ -rC1 ABCD_*.csv(n)
ABCD_72_1_20210722_163502.csv
ABCD_72_2_20210722_163502.csv
ABCD_72_3_20210722_163502.csv
ABCD_72_4_20210722_163502.csv
ABCD_72_5_20210722_163502.csv

หรือ (ในลำดับตัวเลขย้อนกลับ)

 % พิมพ์ -rC1 ABCD_*.csv(nOn)
ABCD_72_5_20210722_163502.csv
ABCD_72_4_20210722_163502.csv
ABCD_72_3_20210722_163502.csv
ABCD_72_2_20210722_163502.csv
ABCD_72_1_20210722_163502.csv
bac0n avatar
cn flag
เร็วจริงไรจริง.
Score:0
ธง cn

ท่านพิจารณาง่ายๆ

ls -v -1

นอกจากนี้ยังสามารถใช้งานได้อย่างเป็นธรรมชาติด้วยข้อมูลจำเพาะของไฟล์ เช่น:

ls -v -1 ABCD*

หรือ

ls -v -1 A*.csv
Score:-1
ธง cn

การแก้ไขคำสั่งของคุณเอง สิ่งนี้ควรทำงาน:

ls -l | awk '{พิมพ์ $NF}' | เรียงลำดับ -nk3
cocomac avatar
cn flag
สิ่งนี้ล้มเหลวในการจัดการไดเร็กทอรีที่มีช่องว่าง เช่น ถ้าฉันสร้างไดเร็กทอรีชื่อ `test dir` (ด้วย `mkdir test\ dir`) และรันคำสั่งของคุณ ก็จะพิมพ์ `test` แต่ไม่ใช่ `test dir` ตัวอย่างบรรทัดไดเร็กทอรีที่ล้มเหลว `drwxr-xr-x 2 ubuntu ubuntu 4096 7 ต.ค. 09:53 'test dir'`

โพสต์คำตอบ

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