Puncte:2

Sortați fișierele în funcție de numele care conține valori numerice

drapel ma

Am astfel de fișiere în sistemul meu -

-rw-r--r-- 1 abc abcadm 14852497 23 iulie 01:11 ABCD_72_3_20210722_163502.csv
-rw-r--r-- 1 abc abcadm 14853145 23 iulie 01:11 ABCD_72_1_20210722_163502.csv
-rw-r--r-- 1 abc abcadm 14839699 23 iulie 01:11 ABCD_72_2_20210722_163502.csv
-rw-r--r-- 1 abc abcadm 14842673 23 iulie 01:11 ABCD_72_5_20210722_163502.csv
-rw-r--r-- 1 abc abcadm 14843811 23 iulie 01:11 ABCD_72_4_20210722_163502.csv

Vreau să sortez acele fișiere pentru a imprima numai numele fișierului și într-un mod sortat ca mai jos:

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

Folosesc cele de mai jos pentru a comanda sortarea în ordine crescătoare și pentru a tipări doar numele, dar lista nu este sortată.

ls -l | ABCD_72_[0-9]*_20210722_163502* | awk '{print $9}' | fel

Vă rog să-mi sugerați unde greșesc sau vreo alternativă la asta?

Puncte:2
drapel cn

În primul rând, nu analizați rezultatul ls. Putem modifica răspunsul la o altă întrebare un pic pentru a-l face nerecursiv și apoi găsi ./ -maxdepth 1 -printf „%f\n”, și doriți să fie sortat, așa că introduceți-l în fel. Comanda finală este

$ find ./ -maxdepth 1 -printf „%f\n” | fel

După cum a subliniat @Rinzwind, dacă doriți să sortați numeric (deci 2 putea veni înainte 12), adăuga --sortare numerică până la sfârșitul comenzii care o face.

găsi ./ -maxdepth 1 -printf „%f\n” | sortare --sortare numerică
bac0n avatar
drapel cn
Aceasta se întrerupe pe *newline*, ar putea face `-printf %f\0 | sortare -zn | xargs -0 -n 1`
cocomac avatar
drapel cn
@bac0n Apoi fie editați răspunsul meu, fie postați-l pe al dvs. Nu am luat în considerare liniile noi, pentru că de ce ar avea cineva o linie directă într-un nume de fișier?!?
Puncte:0
drapel hr

Dacă treci la zsh, puteți folosi calificatorul său numeric glob:

   n setează opțiunea NUMERIC_GLOB_SORT pentru modelul curent

(vedea Calificări Glob sub FILENAME GENERATION sectiune de om zshexpn).

Ex.

 % print -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

sau (în ordine numerică inversă)

 % print -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
drapel cn
De fapt, foarte rapid.
Puncte:0
drapel cn

Te-ai gândit simplu

ls -v -1

Acest lucru poate fi, de asemenea, folosit în mod natural cu o specificație de fișier, cum ar fi:

ls -v -1 ABCD*

sau

ls -v -1 A*.csv
Puncte:-1
drapel cn

Modificarea propriei comenzi ar trebui să facă treaba:

ls -l | awk „{printează $NF}” | sortare -nk3
cocomac avatar
drapel cn
Acest lucru nu reușește să gestioneze directoarele care au spații. De exemplu, dacă creez un director numit `test dir` (cu `mkdir test\ dir`) și rulez comanda, va tipări `test`, dar nu `test dir`. Exemplu de linie de director care eșuează `drwxr-xr-x 2 ubuntu ubuntu 4096 Oct 7 09:53 'test dir'`.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.