R11G
R11G

Reputation: 1980

How to get the latest filename alone in a directory?

I am using

ls -ltr /homedir/mydirectory/work/ |tail -n 1|cut -d ' ' -f 10

But this is a very crude way of getting the desired result.And also its unreliable. The output I get on simply executing

ls -ltr /homedir/mydirectory/work/ |tail -n 1

is

-rw-r--r-- 1 user pusers 1764 Apr  1 12:06 firstfile.xml

So here I get the file name. But if the output on doing the above command is like

-rw-r--r-- 100 user pusers 1764 Apr  1 12:06 firstfile.xml

the first command fails ! And understandably as I am cutting the result from the 10th character which does not hold valid now.

So how to refine it.

Upvotes: 5

Views: 6827

Answers (3)

Shubham Jain
Shubham Jain

Reputation: 17553

Extended user user529758 answer which can give result as per file name

use below commnad as per the file name

ls -tr Filename* | tail -n 1

Upvotes: 1

Umair A. Shahid
Umair A. Shahid

Reputation: 143

If you really want to achieve this using your method, then, use awk instead of cut

ls -ltr /var/log/ |tail -n 1| awk '{print $9}'

Upvotes: 1

user529758
user529758

Reputation:

Why do you use the -l flag for ls if you don't need it? Make ls simply output the filenames if you don't need more information instead of trying to "parse" its non-unified output (raping poor text processing utilities...).

LAST_MODIFIED_FILE=`ls -tr | tail -n 1`

Upvotes: 10

Related Questions