Visit Our UNIX and Linux User Community

How to create symlink for latest file only?

Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How to create symlink for latest file only?
# 1  
Old 04-12-2019
How to create symlink for latest file only?


On Solaris 10, here are entries for logs in httpd.conf
ErrorLog "|/export/apache/apache-2.2.17/bin/rotatelogs -l -f /var/log/apache/error_log.%Y%m%d 86400"

It keeps creating daily logs with below names -
-rw-r--r--   1 root     root     1016747232 Apr  5 23:59 /var/log/apache/error_log.20190405
-rw-r--r--   1 root     root     946721391 Apr  6 23:59 /var/log/apache/error_log.20190406
-rw-r--r--   1 root     root     1092546540 Apr  7 23:59 /var/log/apache/error_log.20190407
-rw-r--r--   1 root     root     1172486303 Apr  8 23:59 /var/log/apache/error_log.20190408
-rw-r--r--   1 root     root     909466871 Apr  9 23:59 /var/log/apache/error_log.20190409
-rw-r--r--   1 root     root     916731172 Apr 10 23:59 /var/log/apache/error_log.20190410
-rw-r--r--   1 root     root     785326845 Apr 11 23:59 /var/log/apache/error_log.20190411
-rw-r--r--   1 root     root     463003111 Apr 12 13:38 /var/log/apache/error_log.20190412

I want to create a symlink 'error_log' and that should point to latest log file. One idea is, to create two cronjobs for 00:00 midnight, something like this
00 00 * * * ln -s /var/log/apache/error_log.20190412 /var/log/apache/error_log
59 00 * * * unlink /var/log/apache/error_log

But how will I tell cron, to pick only latest error_log.xxxxxx ? Is it possible ?

This User Gave Thanks to solaris_1977 For This Post:
# 2  
Old 04-12-2019
Fortunately, your file names are "sort friendly". Try
ls  *log.* | sort | tail -1

This User Gave Thanks to RudiC For This Post:
# 3  
Old 04-12-2019
Yes, that can help. How can I pass that name to cronjob ?

Alternatively I thought of passing same syntax as mentioned in logrotate, but that fails
bash-3.2# ls -l /var/log/apache/error_log.%Y%m%d
/var/log/apache/error_log.%Y%m%d: No such file or directory

If this can work, I can pass that in cron in similar way
00 00 * * * ln -s /var/log/apache/error_log.%Y%m%d /var/log/apache/error_log
59 00 * * * unlink /var/log/apache/error_log

Last edited by solaris_1977; 04-12-2019 at 07:53 PM..
This User Gave Thanks to solaris_1977 For This Post:
# 4  
Old 04-12-2019
shell uses backticks and $( ) to turn program output into strings.

cd /var/log ; ln -s $(ls  *error_log.* | sort | tail -1) error_log

These 2 Users Gave Thanks to Corona688 For This Post:
# 5  
Old 04-12-2019
This worked well. Thanks much
This User Gave Thanks to solaris_1977 For This Post:
# 6  
Old 04-15-2019
I'd not bother with the sort. The output should be lexically ordered anyway, so it's redundant.

In some OS, you might need to add a -f to get it to replace the sym-link, and of course you need permission to write to the directory (which root will have, naturally)

# 7  
Old 04-16-2019
Originally Posted by Corona688
shell uses backticks and $( ) to turn program output into strings.

cd /var/log ; ln -s $(ls  *error_log.* | sort | tail -1) error_log

Originally Posted by rbatte1
I'd not bother with the sort. The output should be lexically ordered anyway, so it's redundant.

I would also be inclined to use the reverse-sort option to ls, and head instead of tail, thus:
cd /var/log ; ln -s $(ls -r  *error_log.*  | head -1) error_log


Previous Thread | Next Thread
Test Your Knowledge in Computers #660
Difficulty: Medium
DOS uses a filesystem which supports 9.3 filenames: 9 characters for the filename and 3 characters for the extension.
True or False?

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers


I know how to create a symlink but I am getting an error message that the file already exists. Also, my symlink doesn't point from target directory to the path correctly, Here is an example of the path to my folder structure path: cd /wkspce/wff/DEV/jobs/DEL the folder structure is: ... (3 Replies)
Discussion started by: dellanicholson
3 Replies

2. Shell Programming and Scripting

Symlink creation

I am trying to setup my plex server to use symlinks rather than host the movie files. in my storage directory, i have both movies(some in subdirectory of the name and some just in the parent directory) and tvshows, which have subdirectories for each season, which contains the episodes i would... (3 Replies)
Discussion started by: bandion
3 Replies

3. Shell Programming and Scripting

Picking the latest file based on a timestamp for a Dynamic file name

Hi , I did the initial search but could not find what I was expecting for. 15606Always_9999999997_20160418.xml 15606Always_9999999998_20160418.xml 15606Always_9999999999_20160418.xml 9819Always_99999999900_20160418.xml 9819Always_99999999911_20160418.xmlAbove is the list of files I... (4 Replies)
Discussion started by: chillblue
4 Replies

4. UNIX and Linux Applications

Tomcat 6.0 fails to read symlink(symbolic link) file

Hello all experts, Im in a situation where Tomcat simply does not want to read this file through the symlink.... I checked permissions..OK Also checked file & tomcat owner...all OK. This is what I have my /tomcat/conf/Catalina/local/appname.xml <Context> <Resource name="jdbc/black" ... (3 Replies)
Discussion started by: KingaKoopa
3 Replies

5. Shell Programming and Scripting

Shell script to get the latest file from the file list and move

Hi, Anybody help me to write a Shell Script Get the latest file from the file list based on created and then move to the target directory. Tried with the following script: got error. A=$(ls -1dt $(find "cveit/local_ftp/reflash-parts" -type f -daystart -mtime -$dateoffset) | head... (2 Replies)
Discussion started by: saravan_an
2 Replies

6. Shell Programming and Scripting

create t a filelist with the latest file by YYYYMMDD and move to subfolder

Hi all, I am receiving files named like: ABC_20120730.csv ABC_20120801.csv ABC_20120812.csv They are residing in a folder named Incoming. I am supposed to write a script that will create a filelist which will contain only the name of the latest file beginning with ABC_, by YYYYMMDD... (3 Replies)
Discussion started by: kedrick
3 Replies

7. Shell Programming and Scripting

File count for symlink using find command

Hi Guys, The script which I am using works really good for finding the file count for files that are not symlink. I know I can use find command like: find . -type l | wc -l This way I can get filecount of the symlink but is there a one liner to use -type l and -type f option ? That is... (4 Replies)
Discussion started by: dixits
4 Replies

8. Shell Programming and Scripting

ln -s creates symlink in symlink, if [ -f ... ] says file that exists doesn't exist

Hi Forums, I got a little problem, I made a few modifications to the code of the launch script of a testing server(minecraft) and now updating is broken aswell as the automatic directory creation. These Lines somehow create an endless symlink that refers to itself and I don't know how to fix... (0 Replies)
Discussion started by: Xaymar
0 Replies

9. Solaris

symlink on link file

Hi all, I want to create a symlink on a link file, i mean, there is a file which is actually a symlink of some version. Now i want to create one more symlink on that link file. EX: there is a file: uat -> version prod -> version Now i want to create one more link on these 'uat' and... (1 Reply)
Discussion started by: raghu.iv85
1 Replies

10. UNIX for Dummies Questions & Answers

creating symlink

hi... I have a folder<abc> under /root folder. I want to create a symlink such that when i click on folder<abc> under root, should display my home folder (home/krish). Immediate inputs appreciated..... (1 Reply)
Discussion started by: rama.honge
1 Replies

Featured Tech Videos