==== 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