User Tools

Site Tools


ls_usage

sort ls output by filename length

ls --color=never --indicator-style=none | awk '{print length, $0}' |
sort -n | cut -d" " -f2-

To see it in action, create some files

% touch a ab abc

and some directories

% mkdir d de def

Output of the normal ls command

% ls
a  ab  abc  d/  de/  def/

Output from the proposed command

% ls --color=never --indicator-style=none | awk '{print length, $0}' |
sort -n | cut -d" " -f2-
a
d
ab
de
abc
def

Ref:- https://stackoverflow.com/a/70628169

Show file date in different date formats

tags | YYYY-MM-DD, YYYYMMDD, YYYYMMDD_HHMMSS

Use one of

--time-style='+%Y%m%d_%H%M%S'
--time-style='+%Y-%m-%d'
--time-style='+%Y%m%d'

For example

% ls -l --time-style='+%Y%m%d_%H%M%S' ~/.vimrc
-rwx------ 1 rajulocal rajulocal 1112 20201017_141554 /home/rajulocal/.vimrc*

% ls -l --time-style='+%Y-%m-%d' ~/.vimrc
-rwx------ 1 rajulocal rajulocal 1112 2020-10-17 /home/rajulocal/.vimrc*

% ls -l --time-style='+%Y%m%d' ~/.vimrc 
-rwx------ 1 rajulocal rajulocal 1112 20201017 /home/rajulocal/.vimrc*

indicators

“ls -F” appends indicators */=>@| to filenames.

  • * means executable.
  • / means directory.
  • = means socket.
  • > means door.
  • @ means symbolic link (or that the file has extended attributes).
  • | means named pipe.

Ref:- https://unix.stackexchange.com/questions/82357/what-do-the-symbols-displayed-by-ls-f-mean

only show filename and modification time

ls -al | cut -d ' ' -f 6- 

Another way (using find):

find -maxdepth 1 -type f -printf "%TY %Tb %Td %TH:%TM\t%p\n"

To sort the files based on timestamp (reverse chronological order)

find -maxdepth 1 -type f -printf "%T+#%TY %Tb %Td %TH:%TM\t%p\n" | sort -rn| cut -d# -f2-

The %T+ is used to sort the output properly and gets removed by cut afterwards.

Ref:- https://askubuntu.com/a/1044206/574082

ls_usage.txt · Last modified: 2022/07/22 23:34 by raju