Hide

What's this?

commandlinefu.com is the place to record those command-line gems that you return to again and again.

Delete that bloated snippets file you've been using and share your personal repository with the world. That way others can gain from your CLI wisdom and you from theirs too. All commands can be commented on, discussed and voted up or down.


If you have a new feature suggestion or find a bug, please get in touch via http://commandlinefu.uservoice.com/

Get involved!

You can sign-in using OpenID credentials, or register a traditional username and password.

First-time OpenID users will be automatically assigned a username which can be changed after signing in.

Hide

Stay in the loop…

Follow the Tweets.

Every new command is wrapped in a tweet and posted to Twitter. Following the stream is a great way of staying abreast of the latest commands. For the more discerning, there are Twitter accounts for commands that get a minimum of 3 and 10 votes - that way only the great commands get tweeted.

» http://twitter.com/commandlinefu
» http://twitter.com/commandlinefu3
» http://twitter.com/commandlinefu10

Subscribe to the feeds.

Use your favourite RSS aggregator to stay in touch with the latest commands. There are feeds mirroring the 3 Twitter streams as well as for virtually every other subset (users, tags, functions,…):

Subscribe to the feed for:

Hide

News

2012-05-20 - test
test
2012-05-20 - test
test
2012-05-20 - test
test
2012-05-20 - Test tweets
YU not working?
Hide

Tags

Hide

Functions

Commands tagged rm

Commands tagged rm from sorted by
Terminal - Commands tagged rm - 36 results
rm -rf /commands/by/fukr
alias rm='echo "rm is disabled, use trash or /bin/rm instead."'
2012-01-27 03:11:45
User: captaincomic
Functions: alias
Tags: trash rm
0

To prevent accidental deleting of files you can disable rm with this alias. Then use the trash command from trash-cli instead.

cp -r * .??* /dest
2011-12-16 23:41:03
User: atoponce
Functions: cp
Tags: mv rm cp
4

You could do the following, however, brace expansion with {} is not defined in POSIX, and therefore not guaranteed to work in all shells. But, if it does, it's more convenient (although it's certainly not less typing):

cp -r {*,.??*} /dest

Sometimes there are times when I need to cp(1), mv(1) or rm(1) files recursively, but don't want to traverse the previous directory by following ../../../../ etc out of the current directory. This command prevents that. The secret sauce is ".??*". The file globbing ensures that it must start with a dot, and be followed by at least two characters. So, three characters must exist in the filename, which eliminates "." and "..".

ls -1 $PATH*/* | xargs file | awk -F":" '!($2~/PDF document/){print $1}' |xargs rm -rf
unzip -l filename.zip |awk '{ if($4 != "Name" && $4 != "----") print $4}'|xargs -t rm -rf {}
2011-10-20 18:54:15
User: hk0i
Functions: awk rm xargs
Tags: awk xargs unzip rm
0

Sometimes you unzip a file that has no root folder and it spews files all over the place. This will clean up all of those files by deleting them.

find /path/folder -type f -name "*.*" -print -exec rm -v {} + | wc -l;
2011-09-19 14:53:37
User: Koobiac
Functions: find rm wc
0

It does not work without the verbose mode (-v is important)

rm -R `ls | egrep -v 'dir1|dir2|file1'`
rm !(*.txt)
rm -r .[!.]*
rm -rf .[!.]*
rm -rf .??*
2011-03-11 07:21:58
User: greggster
Functions: rm
Tags: rm dot
0

rm -rf .* matches ".." and thus one goes up a level and wipes out more than intended.

In bash, .??* safely accomplishes what one intends - remove those .files

The ? matches most characters except "/", thus .?? does not match ../ and so one is safe.

rm *[!teste0,teste1,teste2]
2011-01-25 22:00:29
Functions: rm
Tags: grep rm
-1

Remove all arquives except the list.

Can't have space between the commas.

rm *[!abc]
2011-01-25 19:41:41
User: Vilemirth
Functions: rm
Tags: grep rm
0

Bash method to remove all files but "abc".

It would be 'rm *~abc' in Zsh.

find . -depth -name .svn -type d -exec rm -fr {} \;
2010-12-16 17:16:23
User: tebeka
Functions: find rm
Tags: find rm
5

-depth argument will cause find to do a "depth first" tree search, this will eliminate the "No such file or directory" error messages

rm **/*.htm
2010-11-25 17:28:55
Functions: rm
Tags: find rm
-2

expands through shell and not find

but may hits the limit of max argument size for rm

(thus: for f in **/*.htm;do rm $f;done

but then I prefer the find command ;)

rm -rf *.htm
find . -type f -name '*.htm' -delete
rm -rf `find . -type f -name *.htm`
rm ^'name with spaces'
2010-08-21 02:24:17
User: dbbolton
Functions: rm
Tags: rm zsh glob
0

This is for zsh with extended globbing.

rm -f **/Thumbs.db
2010-08-18 07:09:19
User: Seebi
Functions: rm
Tags: thumbnails rm zsh
3

An alternative which uses the advanced zsh globbing (pattern matching)

rm $( ls | egrep -v 'abc|\s' )
2010-07-18 10:59:15
User: dbbolton
Functions: egrep ls rm
Tags: grep rm
-1

Really, you deserve whatever happens if you have a whitespace character in a file name, but this has a small safety net. The truly paranoid will use '-i'.

find / -type f -name *.tar.gz -size +10M -exec ls -l {} \;
2010-06-29 12:39:02
User: 0disse0
Functions: find ls
Tags: find ls exec rm type
0

Please be careful while executing the following command as you don?t want

to delete the files by mistake. The best practice is to execute the same

command with ls ?l to make sure you know which files will get deleted when

you execute the command with rm.

for dir in $(find -type d ! -name CVS); do for file in $(find $dir -maxdepth 1 -type f); do rm $file; cvs delete $file; done; done
2010-04-27 16:03:33
User: ubersoldat
Functions: cvs dir file find rm
Tags: bash cvs delete rm
1

This will search all directories and ignore the CVS ones. Then it will search all files in the resulting directories and act on them.

ls | egrep -v "[REGULAR EXPRESSION]" | xargs rm -v
2010-04-01 02:40:40
User: Saxphile
Functions: egrep ls rm xargs
Tags: files rm
-1

This is a slight variation of an existing submission, but uses regular expression to look for files instead. This makes it vastly more versatile, and one can easily verify the files to be kept by running ls | egrep "[REGULAR EXPRESSION]"

find . -type d -empty -delete