Skip to content

Instantly share code, notes, and snippets.

@DineshDevaraj
Created December 31, 2017 04:51
Show Gist options
  • Save DineshDevaraj/ade4a118ba31344838d92fd2a9ba4247 to your computer and use it in GitHub Desktop.
Save DineshDevaraj/ade4a118ba31344838d92fd2a9ba4247 to your computer and use it in GitHub Desktop.
import os
import time
from datetime import datetime
from stat import *
#
# 1. File type (directory / regular file)
# 2. File permission (owner, group, others)
# 3. Owner name
# 4. Group name
# 5. File size
# 6. Modified date
# 7. File name
#
def get_permission_flags(filestat) :
permission = ''
# first hypen - file type
if(S_ISREG(filestat.st_mode)) :
permission += '-'
elif(S_ISDIR(filestat.st_mode)) :
permission += 'd'
elif(S_ISLNK(filestat.st_mode)) :
permission += 'l'
else :
permission += '-'
# second hypen - read for user
if(S_IRUSR & filestat.st_mode) :
permission += 'r'
else :
permission += '-'
# third hypen - write for user
if(S_IWUSR & filestat.st_mode) :
permission += 'w'
else :
permission += '-'
# fourth hypen - execute for user
if(S_IXUSR & filestat.st_mode) :
permission += 'x'
else :
permission += '-'
# fifth hypen - read for group
if(S_IRGRP & filestat.st_mode) :
permission += 'r'
else :
permission += '-'
# sixth hypen - write for group
if not S_IWGRP & filestat.st_mode :
permission += 'w'
else :
permission += '-'
# seventh hypen - execute for group
if(S_IXGRP & filestat.st_mode) :
permission += 'x'
else :
permission += '-'
# 7th hypen - read for others
if(S_IROTH & filestat.st_mode) :
permission += 'r'
else :
permission += '-'
# 8th hypen - write for others
if not S_IWOTH & filestat.st_mode :
permission += 'w'
else :
permission += '-'
# 9th hypen - excute for others
if(S_IXOTH & filestat.st_mode) :
permission += 'x'
else :
permission += '-'
return permission
def main() :
filelist = os.listdir()
for filepath in filelist :
filestat = os.stat(filepath)
# print(filestat)
dateobj = datetime.fromtimestamp(filestat.st_mtime)
datestr = dateobj.strftime("%b %d %H:%M")
# this function call will handle all the hypen work
permission = get_permission_flags(filestat)
print("%s %s %s %d %s %s" % (permission, filestat.st_uid,
filestat.st_gid, filestat.st_size, datestr, filepath))
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment