Puncte:0

Cum să listăm toate fișierele ASCII prezente într-un director?

drapel mx

Vreau să listez toate fișierele ASCII care nu au extensii (.txt) în directorul meu de lucru actual (acasă). Am început cu ls comandă în terminal, dar nu știu ce ar trebui să pun în opțiuni, deoarece vreau să listez fișierele care nu au extensii, ci doar un nume. Cum trebuie să fac?

Puncte:6
drapel cn

Rulați următoarea comandă:

găsi . -maxdepth 1 -tip f ! -name "*.*" -exec grep -lvIP '[^[:ascii:]]' {} +
  • găsi este mai puternic ls.
  • . -adancime maxima 1 înseamnă doar directorul curent
  • -tip f înseamnă doar fișiere
  • ! -Nume "*.*" înseamnă excluderea fișierelor cu extensie
  • -exec grep...{} + înseamnă filtrarea listei de fișiere prin intermediul grep comanda
  • -lvIP '[^[:ascii:]]' înseamnă că arată numai fișierele -l care nu contin -v orice non(^)-ascii și, de asemenea, nu conțin date binare(-Eu). Sintaxa Perl -P este necesar să utilizați [:ascii:] clasa de caractere din tipar.
Puncte:4
drapel cn

În Linux, orice fișier poate avea orice conținut. Deci, un fișier numit a.txt poate conține o imagine JPEG și un fișier numit firmware.bin poate conține text ASCII.

Dacă sunteți interesat de conținutul fișierelor (să conțină „text ASCII”) precum și de numele fișierelor (să nu conțină un . în numele fișierului), propunerea lui @vanadium în comentariul celuilalt răspuns poate fi îmbunătățită astfel:

găsi . -maxdepth 1 -tip f ! -nume „*.*” -exec fișier -0 {} \; | \
  grep -Pa „\0.*text ASCII.*$”

* Această comandă face corect nu selectați fișierele „binare” având text ASCII în numele lor.

A obține numai lista de nume de fișiere acel meci, adaugă țeava | grep -Pao '^[^\0]*' până la sfârșitul comenzii date mai sus.

Puncte:0
drapel in

Acest lucru poate fi realizat cu găsi:

găsi . -maxdepth 1 -tip f ! -Nume "*.*"

Rețineți că ! mijloace NU, deci va elimina orice rezultat care conține a ..

vanadium avatar
drapel cn
Aceasta va lista * toate * fișierele fără extensie, nu numai fișierele text ASCII așa cum solicită OP. Intenția OP pare să fie de a prelua toate fișierele ASCII, chiar dacă nu au o extensie.
vanadium avatar
drapel cn
Ar putea deveni „găsește”. -maxdepth 1 -tip f ! -nume „*.*” -exec fișier {} \; | grep "ASCII text"` pentru a găsi fișiere ASCI numai fără extensie
FedKad avatar
drapel cn
@vanadium Aceasta nu este o soluție perfectă, deoarece va potrivi fișierele non-ASCII cu „text ASCII” în parte din numele lor. Cu toate acestea, OP nu este clar când se vorbește despre „fișiere ASCII”.
skekmal avatar
drapel mx
@FedonKadifeli Puteți detalia despre faptul că nu știu despre fișierele ASCII? Există diferite tipuri de fișiere ASCII pe care le putem folosi aici pentru a restrânge căutarea?
FedKad avatar
drapel cn
@skekmal În Linux, orice fișier are orice conținut. Deci, un fișier numit `a.txt` poate conține o imagine JPEG și un fișier numit `firmware.bin` poate conține text ASCII. Dacă sunteți interesat de conținutul fișierelor, precum și de numele fișierelor, propunerea lui @vanadium poate fi îmbunătățită astfel: `find . -maxdepth 1 -tip f ! -nume „*.*” -exec fișier -0 {} \; | grep -Pa "\0.*ASCII text"`
vanadium avatar
drapel cn
@FedonKadifeli de aceea nu am scris ca răspuns complet

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.