john
john

Reputation: 11669

How do I find the latest date folder in a directory and then construct the command in a shell script?

I have a directory in which I will have some folders with date format (YYYYMMDD) as shown below -

david@machineX:/database/batch/snapshot$ ls -lt
drwxr-xr-x 2 app kyte 86016 Oct 25 05:19 20141023
drwxr-xr-x 2 app kyte 73728 Oct 18 00:21 20141016
drwxr-xr-x 2 app kyte 73728 Oct  9 22:23 20141009
drwxr-xr-x 2 app kyte 81920 Oct  4 03:11 20141002

Now I need to extract latest date folder from the /database/batch/snapshot directory and then construct the command in my shell script like this -

./file_checker --directory /database/batch/snapshot/20141023/  --regex ".*.data" > shardfile_20141023.log

Below is my shell script -

#!/bin/bash

./file_checker --directory /database/batch/snapshot/20141023/ --regex ".*.data" > shardfile_20141023.log

# now I need to grep shardfile_20141023.log after above command is executed

How do I find the latest date folder and construct above command in a shell script?

Upvotes: 0

Views: 1622

Answers (3)

user184968
user184968

Reputation:

Look, this is one of approaches, just grep only folders that have 8 digits:

ls -t1 | grep -P -e "\d{8}" | head -1

Or

ls -t1 | grep -E -e "[0-9]{8}" | head -1

Upvotes: 1

Adrian Frühwirth
Adrian Frühwirth

Reputation: 45556

See BashFAQ#099 aka "How can I get the newest (or oldest) file from a directory?".

That being said, if you don't care for actual modification time and just want to find the most recent directory based on name you can use an array and globbing (note: the sort order with globbing is subject to LC_COLLATE):

$ find
.
./20141002
./20141009
./20141016
./20141023
$ foo=( * )
$ echo "${foo[${#foo[@]}-1]}"
20141023

Upvotes: 0

seshasai
seshasai

Reputation: 11

You could try the following in your script:

pushd /database/batch/snapshot

LATESTDATE=`ls -d * | sort -n | tail -1`

popd

./file_checker --directory /database/batch/snapshot/${LATESTDATE}/ --regex ".*.data" > shardfile_${LATESTDATE}.log

Upvotes: 0

Related Questions