less cu mai multe fișiere; comandă pentru a afișa numele fișierelor (Unix, Less)

reynoldsnlp a intrebat.

Vreau să pot trece manual prin mai multe fișiere folosind less *.txt și apoi să continui cu fișierele folosind :n. Dacă stabilesc că un fișier trebuie să fie procesat, atunci vreau să pot da o comandă care, de exemplu, să trimită numele fișierului curent la stderr, astfel încât, după ce am terminat de parcurs toate fișierele, să am o listă de nume de fișiere care trebuie procesate. Este posibil așa ceva? Există un alt instrument mai bun pentru acest scop?

Comentarii

  • cum decideți? este arbitrar sau subiectiv sau se bazează pe fapte obiective care pot fi căutate cu grep sau cu un script awk sau perl? –  > Por cas.
  • Decizia se bazează pe factori care ar necesita dezvoltarea unei noi tehnologii pentru a fi determinați în mod automat. Și, în plus, parcurgerea manuală este valoroasă pentru mine pentru a mă familiariza mai bine cu datele pe care le folosesc pentru învățarea automată. –  > Por reynoldsnlp.
3 răspunsuri
meuh

Puteți configura propriul dvs. less cheie de comandă specială. Creați fișierul ~/.lesskey și puneți în el, la început, cele 2 linii:

#command
ok shell echo % >>/tmp/list

Apoi dați comanda

lesskey

pentru a compila fișierul. Rulați fișierul less pe fișierele dvs. și când doriți să salvați numele fișierului introduceți cele 2 caractere ok. Veți vedea ecoul:

!echo myfilename >>/tmp/list
!done  (press RETURN)

care salvează numele curent al fișierului (%) în /tmp/list. Apăsați return pentru a continua.Eu am ales comanda ok în mod arbitrar. Puteți folosi orice caracter unic sau secvență de caractere doriți.Puteți adăuga la :n la sfârșitul fișierului shell linie în ~/.lesskey pentru a trece, de asemenea, la următorul fișier.


Dacă nu aveți lesskey Am rulat-o pe fișierul de mai sus și am trecut-o prin base64 deoarece conține ceva binar. Poate că puteți încerca să folosiți acest lucru:

echo 'AE0rR2MaAG9rAJtlY2hvICUgPj4vdG1wL2xpc3QKOm4AZQAAdgAAeEVuZA==' | base64 -d >~/.less

Comentarii

  • Acest lucru arată fantastic, dar nu există nici un lesskey pe sistemul meu OS X 10.8.5. –  > Por reynoldsnlp.
  • ghinion. se pare că este menționat de către less manpage aici, , așa că nu știu de ce au uitat de ea. –  > Por meuh.
  • Am adăugat ieșirea binară la răspunsul meu. S-ar putea să funcționeze. –  > Por meuh.
clarity123

O modalitate este să scrieți un script care să facă lucrurile cu cât mai puține apăsări de taste, dar dacă nu aveți timp să scrieți și să testați temeinic un script, în funcție de versiunea de less pe care o aveți, da, este posibil să folosiți less.

Testat cu less versiunea 444, iată un exemplu de parcurs.

În primul rând, să presupunem că aveți patru fișiere a.txt b.txt c.txt d.txt

$ less *.txt

a.txt pare în regulă, așa că îl vizualizați în continuare folosind :n

b.txt arată rău, așa că, pentru a-l marca, tastați:

! echo % | tee -a bad.txt

Less va răspunde:

b.txt
!done  (press RETURN)

Continuați :n.

c.txt arată bine. Continuați cu :n

d.txt arată și el rău, dar nu trebuie să rescrieți din nou fiecare tastă, doar ! și săgeată în sus, se va completa automat ultima comandă și se va salva d.txt pe bad.txt

Apoi q pentru a ieși mai puțin.

Acum puteți revizui lista salvată:

$ cat bad.txt
b.txt
d.txt

Explicație

  • Pe ! shell command execută, desigur, o comandă shell, unde % este fișierul curent
  • folosind tee este opțional, doar pentru a avea un indicator suplimentar după ce executați comanda, pentru a ști ce nume de fișier tocmai ați salvat.
  • -a adaugă, altfel s-ar suprascrie și fișierul bad.txt ar avea doar o singură înregistrare.
  • ați fi putut, de asemenea, doar ! echo % >> bad.txt pentru a adăuga la bad.txt

cas

Atunci când trebuie să fac așa ceva, folosesc un terminal cu taburi cu less într-o filă și vi într-o filă adiacentă.

Când ajung la un fișier pe care vreau să îl etichetez, voi face dublu clic pe numele fișierului în partea de jos a filei less ecranului, trec la vi fila, voi face clic în mijloc pentru a-l lipi și voi apăsa ENTER, , apoi trec din nou la less fila.

Dacă sunt mai mult de câteva zeci de fișiere (adică este posibil să îmi ia mai mult de câteva minute), voi încerca să găsesc o modalitate de a automatiza procesul de selecție cu unul sau mai multe dintre instrumentele obișnuite: grep, , awk, , perl, , etc.

grep pentru căutări simple, awk sau perl pentru căutări mai complicate.

Tags: