Delete all log files older than 10 day and whose first string of the first line is "MSH" or "<?xml"


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Delete all log files older than 10 day and whose first string of the first line is "MSH" or "<?xml"
# 1  
Old 02-17-2017
Delete all log files older than 10 day and whose first string of the first line is "MSH" or "<?xml"

Dear Ladies & Gents,

I have a requirement to delete all the log files in /var/log/test directory that are older than 10 days and their first line begin with "MSH" or "<?xml" or "FHS". I've put together the following BASH script, but it's erroring out:

Code:
for filename in $(find /var/log/test -type f -mtime +10)
do
        read -r firstLine < $filename
        echo "$firstLine"
either        echo "${firstLine:0:3}"     # "${firstLine:0:3}": bad substitution
or             echo "${cut -c1-8}"         # "${cut -c1-8}": bad substitution

        if [ "${firstLine:0:3}" = "MSH" ] || [ "${firstLine:0:3}" = "FHS" ] || [ "${firstLine:0:5}" = "<?xml" ]
        then
                echo $filename >> /var/log/test/my2.log     # Just a log file to keep track of which files got deleted
##              rm $filename
        fi
done

*****************************************************************

Please assist.
Many thanks in advance, you guys/gals are awesome!



Moderator's Comments:
Mod Comment Please use CODE tags as required by forum rules!

Last edited by RudiC; 02-17-2017 at 01:30 PM.. Reason: Added CODE tags.
# 2  
Old 02-17-2017
Just guessing that you are not running a (recent) bash for your "substring expansion" ${firstLine:0:3} as it is the usual syntax and should work. ${cut -c1-8} should be a "command substitution" in the syntax $(cut -c1-8) but needs an input file to work upon.
This User Gave Thanks to RudiC For This Post:
# 3  
Old 02-17-2017
Quote:
Originally Posted by RudiC
Just guessing that you are not running a (recent) bash for your "substring expansion" ${firstLine:0:3} as it is the usual syntax and should work. ${cut -c1-8} should be a "command substitution" in the syntax $(cut -c1-8) but needs an input file to work upon.
Come on folks, I need to wake up and so should you. The only problem was that I forget to start with #!/bin/bash, it's all. As soon as I added that, it worked like a charm.

Thank you @RudiC for replying. Your verification of the code gave me enough confidence to go and look elsewhere and find it. Thank you very much.

And thank you all for reading, thinking about replying, etc.

YOU ALL HAVE A VERY NICE WEEKEND (especially you @RudiC). YOU GUYS ARE TRULY AWESOME.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Bash script - Print an ascii file using specific font "Latin Modern Mono 12" "regular" "9"

Hello. System : opensuse leap 42.3 I have a bash script that build a text file. I would like the last command doing : print_cmd -o page-left=43 -o page-right=22 -o page-top=28 -o page-bottom=43 -o font=LatinModernMono12:regular:9 some_file.txt where : print_cmd ::= some printing... (1 Reply)
Discussion started by: jcdole
1 Replies

2. Shell Programming and Scripting

Find "*.c" and "Makefile" and then delete them with one line

find "*.c" and "Makefile" and then delete them with one line (3 Replies)
Discussion started by: yanglei_fage
3 Replies

3. Shell Programming and Scripting

Find lines with "A" then change "E" to "X" same line

I have a bunch of random character lines like ABCEDFG. I want to find all lines with "A" and then change any "E" to "X" in the same line. ALL lines with "A" will have an "X" somewhere in it. I have tried sed awk and vi editor. I get close, not quite there. I know someone has already solved this... (10 Replies)
Discussion started by: nightwatchrenba
10 Replies

4. Shell Programming and Scripting

grep with "[" and "]" and "dot" within the search string

Hello. Following recommendations for one of my threads, this is working perfectly : #!/bin/bash CNT=$( grep -c -e "some text 1" -e "some text 2" -e "some text 3" "/tmp/log_file.txt" ) Now I need a grep success for some thing like : #!/bin/bash CNT=$( grep -c -e "some text_1... (4 Replies)
Discussion started by: jcdole
4 Replies

5. Shell Programming and Scripting

how to use "cut" or "awk" or "sed" to remove a string

logs: "/home/abc/public_html/index.php" "/home/abc/public_html/index.php" "/home/xyz/public_html/index.php" "/home/xyz/public_html/index.php" "/home/xyz/public_html/index.php" how to use "cut" or "awk" or "sed" to get the following result: abc abc xyz xyz xyz (8 Replies)
Discussion started by: timmywong
8 Replies

6. Shell Programming and Scripting

awk command to replace ";" with "|" and ""|" at diferent places in line of file

Hi, I have line in input file as below: 3G_CENTRAL;INDONESIA_(M)_TELKOMSEL;SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL My expected output for line in the file must be : "1-Radon1-cMOC_deg"|"LDIndex"|"3G_CENTRAL|INDONESIA_(M)_TELKOMSEL"|LAST|"SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL" Can someone... (7 Replies)
Discussion started by: shis100
7 Replies

7. Shell Programming and Scripting

Delete files older than "x" if directory size is greater than "y"

I wrote a script to delete files which are older than "x" days, if the size of the directory is greater than "y" #!/bin/bash du -hs $1 while read SIZE ENTRY do if ; then find $1 -mtime +$2 -exec rm -f {} \; echo "Files older than $2 days deleted" else echo "free Space available"... (4 Replies)
Discussion started by: JamesCarter
4 Replies

8. Shell Programming and Scripting

Script for delete tmp files older than 15 days and owned by "xxx" id

Hi All , I want to delete files from /tmp directory created by "xxxx" id. because i got the list says more than 60 thousand files were created by "xxxx" id since 2002. The /tmp directory has lot of files created by different user ids like root,system etc.. But, i need a script to... (2 Replies)
Discussion started by: vparunkumar
2 Replies

9. Shell Programming and Scripting

Unix commands delete all files starting with "X" except "X" itself. HELP!!!!?

im a new student in programming and im stuck on this question so please please HELP ME. thanks. the question is this: enter a command to delete all files that have filenames starting with labtest, except labtest itself (delete all files startign with 'labtest' followed by one or more... (2 Replies)
Discussion started by: soccerball
2 Replies

10. UNIX for Dummies Questions & Answers

Explain the line "mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'`"

Hi Friends, Can any of you explain me about the below line of code? mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'` Im not able to understand, what exactly it is doing :confused: Any help would be useful for me. Lokesha (4 Replies)
Discussion started by: Lokesha
4 Replies
Login or Register to Ask a Question