Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

I want to recursively list all files in a given directory, with their full path and their timestamps. Something like this:

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

I've tried with:

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

but that doesn't give me the full path.

share|improve this question
add comment

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
add comment

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
add comment

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
add comment

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.