47 lines
1.1 KiB
Ruby
Executable file
47 lines
1.1 KiB
Ruby
Executable file
#!/usr/bin/env ruby
|
|
|
|
def main
|
|
output = `ls #{ARGV.map {|a| "\"#{a}\""}.join(' ')}`
|
|
lines = output.split("\n")
|
|
i = 0
|
|
most_commas = 0
|
|
number_of_commas = []
|
|
unchanged_line_indexes = []
|
|
new_lines = lines.map do |line|
|
|
if line =~ /^[-dl][-rwxsS]{9}[@+\s]?/
|
|
size = line.split[4]
|
|
if size =~ /^\d+$/
|
|
new_size = commaify(size)
|
|
new_line = line.sub(size, new_size)
|
|
n = new_size.count(',')
|
|
number_of_commas << n
|
|
most_commas = n if n > most_commas
|
|
end
|
|
end
|
|
unless new_line
|
|
unchanged_line_indexes << i
|
|
number_of_commas << 0
|
|
new_line = line
|
|
end
|
|
i += 1
|
|
new_line
|
|
end
|
|
new_lines.each_with_index do |line, i|
|
|
if line =~ /^[-dl][-rwxsS]{9}[@+\s]?/
|
|
size = line.split[4]
|
|
padded_size = (' ' * (most_commas - number_of_commas[i])) + size
|
|
new_lines[i] = line.sub(size, padded_size)
|
|
end
|
|
end
|
|
puts new_lines.join("\n")
|
|
end
|
|
|
|
def commaify(size)
|
|
number_with_delimiter(size)
|
|
end
|
|
|
|
def number_with_delimiter(n, delimiter = ',')
|
|
n.to_s.gsub(/(\d)(?=(\d\d\d)+(?!\d))/, "\\1#{delimiter}")
|
|
end
|
|
|
|
main if __FILE__ == $0
|