[Solved] Delete files with condition


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers [Solved] Delete files with condition
# 1  
Old 05-31-2012
[Solved] Delete files with condition

I have a directory containing thousands of items “video files”, these items were generated by an application, which generates two items with the same name but with different extensions “.avi and .mp4”. There was a tool in my application to remove one item @ a time. Later I found this tool removes item with one extension “.avi” the other file “.mp4” remains.
I want to remove the items .mp4 after checking that the items .avi is not exist.
Thank you in advance
# 2  
Old 05-31-2012
Try this:
Code:
#!/bin/ksh

ls *.mp4|while read line
do
  print "Checking [$line] ... \c"
  if [[ -f "${line%.mp4}.avi" ]]; then
    print ".avi exists"
  else
    print "No matching .avi, deleting $line"
    # remove the comment after validating
    #rm -f "$line"
  fi
done

exit 0


Last edited by gary_w; 05-31-2012 at 12:07 PM.. Reason: double-quote variables
# 3  
Old 05-31-2012
I may have misunderstood your requirements, but what's wrong with this bash "one" liner:

Code:
for i in directory/with/videos/files/*.mp4;do if [ ! -e ${i%.mp4}.avi ] ; then rm $i;fi;done

Or more explicitly:
Code:
for i in directory/with/videos/files/*.mp4;do # work through all mp4 files
   if [ ! -e "${i%.mp4}.avi" ] ; then # if no matching avi file exists
      rm "$i" # delete the mp4 file
   fi
done


Last edited by Skrynesaver; 05-31-2012 at 01:00 PM.. Reason: Quoted filename variables in the light of Scrutinizer's very valid observation.
This User Gave Thanks to Skrynesaver For This Post:
# 4  
Old 05-31-2012
Note: Double quotes around variable references, will ensure that file names with spaces do get processed properly..
This User Gave Thanks to Scrutinizer For This Post:
# 5  
Old 05-31-2012
Doh, good catch. I updated my example.
# 6  
Old 05-31-2012
many thanks for your help

solved
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

[Solved] Help with condition

I have below code, I am checking on one server where ppp.sh process not running it is perfectly fine, when i am checking the same script on another server where ppp.sh script is running, it is throwing error "too many arguments", how to avoid this. If i will check on server where process running it... (5 Replies)
Discussion started by: learnbash
5 Replies

2. Shell Programming and Scripting

[Solved] How to stop script at certain condition?

Hi Gurus, my script likes below if ;then if ; then exit 30 fi if for loop do done I want to if condition1 is true, it exit the execution the script completely with error code 30. but right now it still exe for loop. I try to add below if ;then if ; then ... (3 Replies)
Discussion started by: ken6503
3 Replies

3. Shell Programming and Scripting

Delete File in a Directory Using a Condition

Hello, I have a directory with many files whose creation time is distributed all over the day. I need ANY 20 files per hour. So, I need 20 files for hour 00 20 files for hour 01 ... 20 files for hour 23 What I have done so far is not great. Here is the code: # get the Month a=`echo... (8 Replies)
Discussion started by: shekhar2010us
8 Replies

4. UNIX for Dummies Questions & Answers

[Solved] Delete files older than 10 years

I need a command which delete files older than 10 years. I got a command for 90 days and all commands I find are for days and nothing for years. find file_name -mtime +90 -exec rm {} \; (5 Replies)
Discussion started by: eskay
5 Replies

5. Shell Programming and Scripting

[Solved] Get files & delete them by shell script

I want to use my script to get any file then delete it once it transfers to my side , I manage to create below script to generate "list" file which contains all file names in "10.10.1.1" then I made "a.out" file which contains the commands that I want to run it on "10.10.1.1" to get & delete the... (2 Replies)
Discussion started by: arm
2 Replies

6. Shell Programming and Scripting

Delete if condition met in a column

i have a table like this: id, senderNumber, blacklist ----------------------------- 1 0835636326 Y 2 0373562343 Y 3 0273646833 Y and I want to delete automatically if a new inserted row on another table consist anything on senderNumber column above using a BASH Script I... (9 Replies)
Discussion started by: jazzyzha
9 Replies

7. UNIX for Dummies Questions & Answers

[Solved] Weird files to delete

Hi, I created some files with a script and I don't know yet where I did a mistake but the script created some "weird" files... prd01,/tmp # ls -al total 706184 -rw-r----- 1 root system 34 Aug 27 16:10 hdisk3BB hdisk3 hdisk3BB.tmp drwxrwxrwt 51 bin bin ... (9 Replies)
Discussion started by: Castelior
9 Replies

8. Shell Programming and Scripting

[SOLVED] Sorting file and get everything on same line on condition

Good afternoon! I am a perl newbie. I hope you will be patient with me. I have a script that needs to be written in perl. I can't do it in awk or shell scripting. Here is the script: #!/usr/bin/perl use POSIX qw(strftime); use FileHandle; use Getopt::Long; use IO::Handle;... (0 Replies)
Discussion started by: brianjb
0 Replies

9. UNIX for Dummies Questions & Answers

[SOLVED] Delete files and folders under given directory

I have a requirement to delete the files and folders under a given directory. my directory structure is like this.. Data | A(Directory) |_PDF(Directory)----pdf files |_XML()Directory --xml files |--files | B(Directory) |_PDF(Directory)----pdf files |_XML()Directory --xml files ... (1 Reply)
Discussion started by: ramse8pc
1 Replies

10. Shell Programming and Scripting

[solved] merging two files and writing to another file- solved

i have two files as file1: 1 2 3 file2: a b c and the output should be: file3: 1~a 2~b 3~c (1 Reply)
Discussion started by: mlpathir
1 Replies
Login or Register to Ask a Question