How to sort files by their permissions using ls

lssort

I have a large number of files and directories in one directory.

I need to sort them in terms of the permissions.

For example

drwx------
drwxr-xr-x 
drwxr-x---

I am just wondering if we can sort the files and dirs using ls?

Best Answer

ls does not directly support sorting by permissions, but you can combine it with the sort command:

ls -l | sort

You can use the -k option to sort to start matching from a specific character, the format is -k FIELD.CHAR, the permissions are the first field in the ls output. So e.g. -k 1.2 will start from the second character of the permission string, which will ignore any directory / device / link etc. flag, or -k 1.5 for sorting by group permissions.

If you don't want the additional output of ls -l, you can remove it with awk:

 ls -l | sort | awk '{ print $1, $NF}'

This will print only the first field (the permissions) and the last one (the filename).

Related Question