|< Day Day Up >|
Recipe 9.14. Deleting Files and Directories
You have files and directories all over the place. How do you get rid of the ones you don't want?
To delete a single file, with verbose output, use:
$ rm -v games-stats.txt removed 'game-stats.txt'
To prompt for confirmation first, use:
$ rm -vi dpkglist rm: remove regular file `dpkglist'? y removed `dpkglist'
Use the -r (recursive) flag to delete a directory, with all files and subdirectories:
$ rm -rvi /home/games/stats/baseball
That deletes the /baseball directory, and everything in it. To delete /games and everything in it, use:
$ rm -rvi /home/games
You can use shell wildcards to delete groups of files, as in:
$ rm -v *.txt removed `file4.txt' removed `file5.txt' removed `file6.txt' removed `file7.txt'
$ rm -v file*
Be very careful when you're using the -rf flags. rm will happily erase your entire drive.
rm -rf / will erase your entire root filesystem. Some folks think it is a funny prank to tell newbies to do this.
Even though the common usage is "rm deletes files," it does not actually delete them, but rather unlinks them from their inodes. A file is not truly deleted until all hard links pointing to it are removed, and it is overwritten. Ordinary users can rm any files in any directories to which they have access, but they can rm only directories that they own.
touch is actually for changing the timestamps on files. Using it to create new empty files is an unintended bonus.
There's also a rmdir command for deleting directories. rmdir won't delete a directory that has something in it. This may make you feel safer, but over time, it will become annoying; lots of programs create files that don't show up in a normal listing (filenames starting with a . are ignored unles you use ls -a). So you'll try to use rmdir and it will tell you that there are still files in the directory. Eventually, you'll just use rm -r.
9.14.4 See Also
|< Day Day Up >|