Can I skip files when running rm command


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Can I skip files when running rm command
# 1  
Old 05-08-2013
Can I skip files when running rm command

Platform: Oracle Enterprise Linux 6.2

I have several files like below. I want to remove all files except one file

For example , I want to remove all the files below except
Code:
dasd_91197.trc

Code:
$ ls -alrt *.trc
-rw-r----- 1 ecmdev wms  8438784 May 7 21:30 dasd_91177.trc
-rw-r----- 1 ecmdev wms  8439296 May 7 21:30 dasd_91178.trc
-rw-r----- 1 ecmdev wms  8439296 May 7 21:30 dasd_91179.trc
-rw-r----- 1 ecmdev wms  8436736 May 7 21:30 dasd_91180.trc
-rw-r----- 1 ecmdev wms  8438784 May 7 21:30 dasd_91181.trc
-rw-r----- 1 ecmdev wms  8439296 May 7 21:30 dasd_91182.trc
-rw-r----- 1 ecmdev wms  8438784 May 7 21:30 dasd_91183.trc
-rw-r----- 1 ecmdev wms  8438272 May 7 21:30 dasd_91184.trc
-rw-r----- 1 ecmdev wms  8439296 May 7 21:30 dasd_91186.trc
-rw-r----- 1 ecmdev wms  8437760 May 7 21:30 dasd_91185.trc
-rw-r----- 1 ecmdev wms  8437248 May 7 21:31 dasd_91187.trc
-rw-r----- 1 ecmdev wms  8439808 May 7 21:31 dasd_91188.trc
-rw-r----- 1 ecmdev wms  8439296 May 7 21:31 dasd_91189.trc
-rw-r----- 1 ecmdev wms  8437760 May 7 21:31 dasd_91190.trc
-rw-r----- 1 ecmdev wms  8440832 May 7 21:31 dasd_91191.trc
-rw-r----- 1 ecmdev wms  8436224 May 7 21:31 dasd_91192.trc
-rw-r----- 1 ecmdev wms  8441856 May 7 21:31 dasd_91193.trc
-rw-r----- 1 ecmdev wms  8437248 May 7 21:31 dasd_91194.trc
-rw-r----- 1 ecmdev wms  8437248 May 7 21:31 dasd_91195.trc
-rw-r----- 1 ecmdev wms  8437248 May 7 21:31 dasd_91200.trc
-rw-r----- 1 ecmdev wms  8437248 May 7 21:31 dasd_91199.trc
-rw-r----- 1 ecmdev wms  8436736 May 7 21:31 dasd_91198.trc
-rw-r----- 1 ecmdev wms  8436736 May 7 21:31 dasd_91197.trc ---------------> Don't remove this file
-rw-r----- 1 ecmdev wms  8436736 May 7 21:31 dasd_91196.trc
-rw-r----- 1 ecmdev wms  8439808 May 7 21:31 dasd_91202.trc
-rw-r----- 1 ecmdev wms  8436736 May 7 21:31 dasd_91201.trc
-rw-r----- 1 ecmdev wms  8441344 May 7 21:31 dasd_91203.trc
-rw-r----- 1 ecmdev wms  8441344 May 7 21:31 dasd_91204.trc
-rw-r----- 1 ecmdev wms  8438272 May 7 21:31 dasd_91205.trc
-rw-r----- 1 ecmdev wms  8441856 May 7 21:31 dasd_91206.trc
-rw-r----- 1 ecmdev wms  8437248 May 7 21:31 dasd_91207.trc

Sometimes I have deal with thousands of files and I might have keep one or two. In this case, I have to run individual rm commands for all the files I have to remove; hence looking for this solution
# 2  
Old 05-08-2013
If there are 1000+ files you might end up with too many arguments error with below..

Code:
 
ls *.trc|grep -v <<your filename>>|xargs rm

This User Gave Thanks to vidyadhar85 For This Post:
# 3  
Old 05-08-2013
Here is one possible way:
Code:
ls | grep -v dasd_91197.trc | xargs rm

If more than one file to retain:
Code:
ls | grep -v -e dasd_91197.trc -e someother.trc | xargs rm

---------- Post updated at 04:49 AM ---------- Previous update was at 04:36 AM ----------

For just the *.trc extension files:
Code:
ls | grep "\.trc$" | grep -v dasd_91197.trc | xargs rm

Or probably better to use find to generate the list of files:
Code:
find . -type f -name "*.trc" | grep -v dasd_91197.trc | xargs rm

---------- Post updated at 09:34 PM ---------- Previous update was at 04:49 AM ----------

One other thing came to me, and I think important. find command of course also finds files in subdirectories (might cause a big problem, maybe remove files you had not intended to remove). So you might need to use find -maxdepth option, as follows:
Code:
$ find . -name "*.sh" -print
./xxx/test.sh
./test.sh
./test-2.sh

Code:
$ find . -maxdepth 1 -name "*.sh" -print
./test.sh
./test-2.sh

So: find . -maxdepth 1 -type f -name "*.trc" | grep -v dasd_91197.trc | xargs rm
This User Gave Thanks to hanson44 For This Post:
# 4  
Old 05-09-2013
Unless you also want to delete files in subdirectories of your current directory, using find to get the list of files with names ending in .trc is grossly inefficient compared to ls *.trc. Unless you're on a system with a small value for ARG_MAX, you can skip using xargs as well using:
Code:
rm $(ls *.trc|grep -F -v -e dasd_91197.trc [-e dasd_other.trc]...)

The standards allow ARG_MAX to be as small as 4096, but on OS X it is 262144. You can find the value on your system using:
Code:
getconf ARG_MAX

If the value returned is likely to be smaller than the number of bytes needed to hold the names of the files you'll be removing plus any environment variables you're exporting, you'll need to keep the xargs element of the pipeline rather than using the above form of command substitution.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Yum error :You could try using --skip-broken to work around the problem , You could try running:

Hi Guys, I got below error while trying to install yum localinstall libstdc++-4.4.7-3.el6.i686.rpm Loaded plugins: product-id, refresh-packagekit, security, subscription-manager This system is not registered to Red Hat Subscription Management. You can use subscription-manager to... (1 Reply)
Discussion started by: heman96
1 Replies

2. Shell Programming and Scripting

sed Command to skip

Friends, I have 1000 line like below #formate Test.server.e01=http://111.22.33.23/ #test_server_west Test.server.w01=http://112.123.123.22/ Test.server.w02=http://113.143.123.22/ Test.server.w03=http://112.183.123.22/ #test_server_east Test.server.e01=http://115.123.123.22/... (6 Replies)
Discussion started by: jothi basu
6 Replies

3. UNIX for Advanced & Expert Users

Skip files in use

Hi all, i'm trying to configure a script that will find and gzip the searched files, this is easy enough, find /var/log/myfolder/*.log -type f -mtime +1 -exec gzip {} \; cd /var/log/myfolder/ mv *gz myzipped_folder/ but what it would be very handy is to skip the files in use,because tomcat... (13 Replies)
Discussion started by: charli1
13 Replies

4. Shell Programming and Scripting

How to skip copying some types of files in csh

Hi, I want to copy data from one directory to another in csh script. But in that i want to skip certain types of file. How can i do that. Currently i am copying all the files as mentioned below.. foreach d ( $TEST_PATH/*) cp -R $d $PWD end now i want to skip files... (3 Replies)
Discussion started by: vdhingra123
3 Replies

5. Shell Programming and Scripting

Running rename command on large files and make it faster

Hi All, I have some 80,000 files in a directory which I need to rename. Below is the command which I am currently running and it seems, it is taking fore ever to run this command. This command seems too slow. Is there any way to speed up the command. I have have GNU Parallel installed on my... (6 Replies)
Discussion started by: shoaibjameel123
6 Replies

6. Shell Programming and Scripting

Command running for all recursive files

hi, I have installed ACL(access control list) in my ubuntu box in order to know which all are the users having permissions to read and write the files; If u run the command like; $getfacl /root/ It will give following output: # file: root/ # owner: root # group: root user::rwx... (2 Replies)
Discussion started by: ajaypadvi
2 Replies

7. Shell Programming and Scripting

How to skip command if it is hanging while waiting for response

Hello, I have a script that contains the command "whois 1.2.3.4" Sometimes this command takes far too long to produce any output and as a result the rest of the script is not executed. Can anyone suggest a method so that if no output is produced after say 2 seconds the script skips that... (2 Replies)
Discussion started by: colinireland
2 Replies

8. Shell Programming and Scripting

Help required on grep command(Skip the first few lines from printing in the output)

Hi experts I want the proper argument to the grep command so that I need to skip the first few lines(say first 10 lines) and print all the remaining instances of the grep output. I tried to use grep -m 10 "search text" file*. But this gives the first 10 instances(lines) of the search string.... (7 Replies)
Discussion started by: ks_reddy
7 Replies

9. Shell Programming and Scripting

Running a command on multiple selected files in nautilus script

I am trying to make a script to convert drg files to wav and so far i have this #!/bin/bash drg2sbg "$*" -o "$*".sbg sbagen -Wo "/home/nick/Desktop/I-Doser Wave Files/"$*"" "$*".sbg rm "$*".sbg cd "/home/nick/Desktop/I-Doser Wave Files" rename 's/\.drg$/\.wav/' *.drg exit the drg2sbg and... (2 Replies)
Discussion started by: Nickbowlingdude
2 Replies

10. Shell Programming and Scripting

running files consecutively with one command

i want to run few c object files one after another in one command. Can i write a acript for that. I'm using Sun Solaris. for example ./prog < input1 >output1 & ./prog <input2 >output2 & i want the first to finish before starting the nest one and run them in the back ground thanks.... (5 Replies)
Discussion started by: narom
5 Replies
Login or Register to Ask a Question