List and Delete Files which are older than 7 days, but have white spaces in file name


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting List and Delete Files which are older than 7 days, but have white spaces in file name
# 8  
Old 04-26-2015
I assume that the question was rhetorical and that you already know that it won't work. If I understand what you're trying to do, try this:
Code:
find . -mtime +60 -name '*[.]__*' ! -name '*[aA][bB][cC]*' ! -name '*[xX][yY][zZ]*' -exec echo rm {} +

If the rm command(s) printed look(s) like it(they) do(es) what you want, remove the echo from the find -exec primary to actually remove the selected files.
This User Gave Thanks to Don Cragun For This Post:
# 9  
Old 04-26-2015
IBM

Quote:
Originally Posted by MadeInGermany
Code:
find . -name "*.__*" -mtime +60 ! -name "*[Aa][Bb][Cc]*" ! -name "*[Xx][Yy][Zz]*" -exec rm {} \;

Thank you. It worked but I missed my criteria - I need to exclude the "ABC" and "XYZ" directory contents in the above recursive command output. Any idea ?

---------- Post updated at 02:57 AM ---------- Previous update was at 02:52 AM ----------

Quote:
Originally Posted by Don Cragun
I assume that the question was rhetorical and that you already know that it won't work. If I understand what you're trying to do, try this:
Code:
find . -mtime +60 -name '*[.]__*' ! -name '*[aA][bB][cC]*' ! -name '*[xX][yY][zZ]*' -exec echo rm {} +

If the rm command(s) printed look(s) like it(they) do(es) what you want, remove the echo from the find -exec primary to actually remove the selected files.
Based on the above Inputs I framed like below to list and delete the files :
Code:
find . -name "*.__*" -mtime +60 ! -name "*[aA][bB][cC]*" -name "*[xX][yY][zZ]*" -exec ls -lrt {} \; -exec rm {} \

But to be clear, I need to exclude "ABC" and "XYZ" directories not file names. Sorry for the confusion.

Thanks.
# 10  
Old 04-26-2015
I don't understand why you thought you needed grep -iv ABC if you just wanted to toss the contents of the directory named ABC...

Does this work with your new requirements?
Code:
find . \( -name ABC -prune \) -o \( -name XYZ -prune \) -o \( -name "*.__*" -mtime +60 -exec rm {} + \)

# 11  
Old 04-26-2015
Quote:
Originally Posted by Don Cragun
I don't understand why you thought you needed grep -iv ABC if you just wanted to toss the contents of the directory named ABC...

Does this work with your new requirements?
Code:
find . \( -name ABC -prune \) -o \( -name XYZ -prune \) -o \( -name "*.__*" -mtime +60 -exec rm {} + \)

I thought grep -v will eliminate the required directories as we will have the long listing. It doesn't work.

The above one looks working, I just modified the given one like below so that it can list and then remove.

Code:
find . \( -name ABC -prune \) -o \( -name XYZ -prune \) -o \( -name "*.__*" -mtime +60 -exec ls -lrt {} \; -exec rm {} \;)

Hope this is correct, I cant test it - because if some thing went wrong I may messup the file system. Hence asking whether it is ok or not.
# 12  
Old 04-26-2015
If you want to test it without making any changes to the file hierarchy, put an echo in front of the rm:
Code:
find . \( -name ABC -prune \) -o \( -name XYZ -prune \) -o \( -name "*.__*" -mtime +60 -exec ls -lrt {} + -exec echo rm {} + \)

Note that with -exec ls -lrt {} \;, the -r and -t are meaningless. With -exec ls -lrt {} +, groups of files will be sorted in reverse time order; but there is no guarantee that all of the files you want to process will be processed by a single invocation of ls.

If the ls output and the echo output shows that it is selecting the files you want to remove, take out the echo to actually remove the selected files.

Note also that if you want to run slower and take more system resources, you can use -exec rm {} \; instead of -exec rm {} +, but you can't combine \; and \) into \;) as you did in your script.
# 13  
Old 04-26-2015
Quote:
Originally Posted by Don Cragun
If you want to test it without making any changes to the file hierarchy, put an echo in front of the rm:
Code:
find . \( -name ABC -prune \) -o \( -name XYZ -prune \) -o \( -name "*.__*" -mtime +60 -exec ls -lrt {} + -exec echo rm {} + \)

Note that with -exec ls -lrt {} \;, the -r and -t are meaningless. With -exec ls -lrt {} +, groups of files will be sorted in reverse time order; but there is no guarantee that all of the files you want to process will be processed by a single invocation of ls.

If the ls output and the echo output shows that it is selecting the files you want to remove, take out the echo to actually remove the selected files.

Note also that if you want to run slower and take more system resources, you can use -exec rm {} \; instead of -exec rm {} +, but you can't combine \; and \) into \;) as you did in your script.
Some how the rm is not executing in the above command, it is listing all the files but not removing. I have removed echo command.
# 14  
Old 04-26-2015
Strange. Please show us the exact output you get when your run the commands:
Code:
find . \( -name ABC -prune \) -o \( -name XYZ -prune \) -o \( -name "*.__*" -mtime +60 -exec ls -lrt {} + -exec rm {} + \) > out1.1 2> out2.1
find . \( -name ABC -prune \) -o \( -name XYZ -prune \) -o \( -name "*.__*" -mtime +60 -exec ls -lrt {} + -exec rm {} + \) > out1.2 2> out2.2
ls -l out[12].[12]
for i in 1 2
do      echo "** out2.$i"
        cat out2.$i
done

Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Linux

Finding files older than x days within directory with spaces

Hi, I am trying to run a command that finds all files over x amount of days, issue is one of the directories has spaces within it. find /files/target directory/*/* -type f -mtime +60 When running the above the usual error message is thrown back + find '/files/target\' 'directory/*/*' -type... (1 Reply)
Discussion started by: Ads89
1 Replies

2. UNIX for Advanced & Expert Users

Delete 5 days older files from sftp

As one of our requirement was to connect to remote Linux server through SFTP connection and delete some files which are older than 7 days. I used the below piece of code for that, SFTP_CONNECTION=`sftp user_id@host ... cd DESIRED_DIR; find /path/to/files* -mtime +5 -exec rm -rf {} \; bye... (2 Replies)
Discussion started by: ATWC
2 Replies

3. Shell Programming and Scripting

Delete files older than 10 Days in a directory

Hi All I want to remove the files with name like data*.csv from the directory older than 10 days. If there is no files exists to remove older than 10 days, It should not do anything. Thanks Jo (9 Replies)
Discussion started by: rajeshjohney
9 Replies

4. Shell Programming and Scripting

Delete files older than X days.

Hi All, I am using below code to delete files older than 2 days. In case if there are no files, I should log an error saying no files to delete. Please let me know, How I can achive this. find /path/*.xml -mtime +2 Thanks and Regards Nagaraja. (3 Replies)
Discussion started by: Nagaraja Akkiva
3 Replies

5. Solaris

Delete files older than 30 days

Hi all, I want to delete log files with extension .log which are older than 30 days. How to delete those files? Operating system -- Sun solaris 10 Your input is highly appreciated. Thanks in advance. Regards, Williams (2 Replies)
Discussion started by: William1482
2 Replies

6. Shell Programming and Scripting

delete files more than 15 days older

i have to delete files which are older than 15 days or more except the ones in the directory Current and also *.sh files i have found the command for files 15 days or more older find . -type f -mtime +15 -exec ls -ltr {} \; but how to implement the logic to avoid directory Current and also... (3 Replies)
Discussion started by: ali560045
3 Replies

7. UNIX for Dummies Questions & Answers

Delete files older than 30 days

This is driving me crazy. How can I delete files in a specifc directory that are over 30 days old? Thanks in advance. (3 Replies)
Discussion started by: tlphillips
3 Replies

8. UNIX for Dummies Questions & Answers

How can I delete files older than 7 days?

I will like to write a script that delete all files that are older than 7 days in a directory and it's subdirectories. Can any one help me out witht the magic command or script? Thanks in advance, Odogboly98:confused: (3 Replies)
Discussion started by: odogbolu98
3 Replies

9. UNIX for Dummies Questions & Answers

delete files older than 7 days

can anyone tell me how I would write a script in ksh on AIX that will delete files in a directory older than 7 days? (1 Reply)
Discussion started by: lesstjm
1 Replies
Login or Register to Ask a Question