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?
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).
stat command stat -c"%A %n" * | sort
You can also sort by octal value.
for i in *; do stat --format="%a %n" "$i"; done | sort -n
ls -l|sortwill sort by permissions.