Tell me more ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

I want to list recursively all files in given direcotry, with their fullpath and their timestamps. Something like this:

10:30 Dec 10 2010 /tmp/mydir/myfile

I've tryied with:

find . -type f -exec ls -la {} \;

but that don't give me the fullpath.

share|improve this question

3 Answers

up vote 1 down vote accepted

And another way to do it if your find doesn't support printf

find . -type f | xargs ls -al | awk -v pwd="$PWD" '{ print $(NF-2), $(NF-1) , pwd substr($(NF), 2)}'

Note This only works as long as there aren't any spaces in the filenames

Output looks like this:

2010-09-29 22:08 /home/nifle/ac.txt
2010-10-04 16:02 /home/nifle/array.sh
2010-10-05 23:32 /home/nifle/b.txt
2010-12-15 16:49 /home/nifle/barcopy/subbar/ghut
2010-12-15 16:48 /home/nifle/bardir/subbar/ghut
2010-09-29 22:16 /home/nifle/foo.gz
2010-09-29 22:16 /home/nifle/foo1.gz

share|improve this answer
1  
As long as there aren't any spaces in the filenames. – Dennis Williamson Jan 3 '11 at 12:07
@Dennis - Ahh, yes you definitely have a point there. – Nifle Jan 3 '11 at 12:10

Solution 1 - run ls on each file and filter the result:

find "$PWD" -type f -exec ls -la {} \; | cut -d ' ' -f 6-

Output:

Jun 14 00:02 /tmp/superuser.com/questions/370070/bar
Jun 14 20:24 /tmp/superuser.com/questions/228529/file  with    multiple   spaces
Jan  2  1972 /tmp/superuser.com/questions/228529/old_file

Solution 2 - use -printf:

find "$PWD" -type f -printf "%t %p\n"

Output:

Thu Jun 14 00:02:47.0173429319 2012 /tmp/superuser.com/questions/370070/bar
Thu Jun 14 20:24:16.0947808489 2012 /tmp/superuser.com/questions/228529/file  with    multiple   spaces
Sun Jan  2 03:04:05.0000000000 1972 /tmp/superuser.com/questions/228529/old_file
share|improve this answer
You can replace $PWD with .. – Dennis Williamson Jan 3 '11 at 12:08
@Dennis Williamson: the command from the question already uses . instead of $PWD and it doesn't give him the full path. – Cristian Ciupitu Jan 3 '11 at 21:09
Ah, sorry, you are correct. – Dennis Williamson Jan 3 '11 at 21:23

This question on StackOverflow plays around with one part of your question. In order to get what you want, you could try the following:

find $ABSOLUTE_PATH_TO_DIR -ls
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.