1

is it possible to list all the ".php" files located into a direcotry and their octal permissions?

I would like to list them like this:

775 /folder/file.php
644 /folder/asd/file2.php
etc...
Gilles 'SO- stop being evil'
  • 807,993
  • 194
  • 1,674
  • 2,175
itsme
  • 113
  • 4

2 Answers2

2
find /folder -name '*.php' -type f -print0 |
  perl -0 -lne 'printf "%o %s\n", (lstat $_)[2]&07777, $_'

See also this related question: Convert ls -l output format to chmod format.

-print0 is a GNU extension also supported by BSDs like OS/X. GNU find also has a -printf predicate which could display the mode, but that one has not been added to BSD's find.

(Tested on OS/X 10.8.4 and Debian 7 but should work on any system that has any version of perl and find -print0 which includes all GNU systems and all recent BSDs)

Stéphane Chazelas
  • 522,931
  • 91
  • 1,010
  • 1,501
  • i launched this from iside my folder /htdocs but it doesn't works :( do you tryed by yourself? – itsme Jul 13 '13 at 10:47
  • 1
    @sbaaaang did you replace `/folder` with the real path? If you run from inside the target folder, that will be `.`. – terdon Jul 13 '13 at 12:31
1
find /some/path -type f -name "*.php" -exec sh -c 'stat -f "%p %N" "{}" | sed -E s/^.{3}//' \;

This is tested on OS X 10.8.4. The sed pipe just cuts the first 3 characters off the output (filetype). Looks like OS X stat doesn't support straight-up octal permission output.

Mel Boyce
  • 349
  • 1
  • 6