402

I just found out I can use less with multiple files. The less status line tells me:

(END) - Next: file2.txt

But how do I navigate previous/next from less?

Franck Dernoncourt
  • 24,246
  • 64
  • 231
  • 400

7 Answers7

439

We read in the manpage:

       :n     Examine  the next file (from the list of files given in the com‐
              mand line).  If a number N is specified, the N-th next  file  is
              examined.
       :p     Examine the previous file in the command line list.  If a number
              N is specified, the N-th previous file is examined.
Stephan202
  • 7,414
53

Type :n and :p.

jtbandes
  • 8,960
39

Found out from :h (help window) that I can use :p (for previous) and :n (for next)

35

Note: you actually have to type the : for these commands (even though there is a colon visible already).

:n jump to next file
:p jump to previous file
:x jump to first file

3:n jump 3 files ahead
3:p jump 3 files back
3:x jump to 3rd file

:f print current file name/info (helpful if you forget where you are)

wisbucky
  • 3,346
8

Not strictly an answer for that question but maybe someone can find this useful nevertheless.

If the number of files is reasonably small, one could use vim for that:

vim -O files*

In this way all the files are displayed at once by splitting the screen automatically.

(Use -o to split horizontally.)

Some basic vim survival commands for this use case:

  • Ctrl-W + arrow selects an adjacent split;
  • / search the buffer;
  • :qa exits vim (!!!).
cYrus
  • 22,335
3

I find the :n binding cumbersome, so I often use the more command instead. (The name less is a wordplay on more, after all.)

more just uses the space bar to advance to the next file, and prints a header before each one. Example:

$ more *.txt
::::::::::::::
a.txt
::::::::::::::
Example file A
::::::::::::::
b.txt
::::::::::::::
Example file B
--More--(Next file: c.txt)

For one line or really short files, I usually use grep . *.txt, because it will prefix each file with the file name:

$ grep . *.txt
a.txt:Example file A
b.txt:Example file B
c.txt:Example file C
remcycles
  • 131
2

Get help about navigation

While the less is opened press h key to open summary of less command and locate section CHANGING FILES:

                        CHANGING FILES

:e [file] Examine a new file. ^X^V Same as :e. :n * Examine the (N-th) next file from the command line. :p * Examine the (N-th) previous file from the command line. :x * Examine the first (or N-th) file from the command line. :d Delete the current file from the command line list. = ^G :f Print current file name.

Commands marked with * may be preceded by a number, N.

For more detailed and verbose help run man less

How to open multiple files in less

# Name each file name as params
less file1.txt file2.txt file3.txt

Group of files sing wild character

less file.txt less .txt

Examples of navigation

While the less is opened

  • Where I am

    • = or :f or Ctrl+G will print you the status of what file is opened, order of the file in the list of total number of opened files with name of next file, etc, aka file.txt (file 1 of 7) (END) - Next: file1.txt
  • Change by N-th file

    • by single file
      • :n to change to next file
      • :p to change to previous file
    • by N-th next file
      • 2:n to change by 2 next files
      • 2:p to change by 2 previous files
  • Change to the N-th file

    • to N-th file
      • 4:x to change to 4th file in the list
    • to the first file
      • :x to change to first file in the list, ie without any number, or
      • 1:x to change to first file in the list with the index number 1
    • to the last file
      • there is no direct command to navigate to the last file
      • use the "Change to the N-th file" command by finding total amount of oepened files from the status = aka (file 4 of 7) so the 7th file is the last one, then use:
      • 7:x to change to next 7th file, ie the last file in our list of 7 files
  • Refresh the file

    • Note: most refreshes works only when there are new lines in the refreshed file.
    • :e without file name do the file re-examination
      • Since re-examination is not working for me I user a workaround to get file refreshed by navigating in the list of files as the file is refreshed each time it is displayed:
      • use :n and :n to move next and previous or number:x to N-th file navigation
    • Shift+R Repaint the screen, discarding any buffered input.
    • Shift+F Scroll forward, and keep trying to read when the end of file is reached.
    • > or Shift+G go to the end of the file with refresh
  • Open new file

    • :efilename
    • Examine: file
      • where file can be filename aka file4.txt or file name pattern aka *.txt or any path to the file(s) aka ~/file*.
      • you can use TAB key to complete the path/filename
      • press TAB to loop between similar file names aka fileTABTAB loops files starting with file1.txt file2.txt file3.txt ...
      • use double quotes for filenames containing one or more spaces
      • percent sign (%) and pound sign (#) used as filename has special meaning.
    • Note: :e may be disabled while running less in "secure" mode, ie the environment variable LESSSECURE is set to 1 or less is compiled in "secure" mode.
  • Close file

    • :d delete, ie close current file from the list of opened files
ino
  • 271