- Linux Delete All Files In Directory Using Command Line
- Linux Delete All Files In Directory
- How to remove all the files in a directory?
- Understanding rm command option that deleted all files in a directory
- Deleting hidden vs non-hidden files
- Bash remove all files from a directory including hidden files using the dotglob option
- Linux Remove All Files In Directory
- Conclusion
- How To: Linux / UNIX delete a file using rm command
- Syntax: rm command to remove a file
- Unix Remove or delete a file example
- Linux delete multiple files
- Linux recursively delete all files
- Linux delete a file and prompt before every removal
- Force rm command to explain what is being done with file
- How to delete empty directories
- How to read a list of all files to delete from a text file
- How do I delete a file named -foo.txt or a directory named -bar?
- Never run rm -rf / as an administrator or normal UNIX / Linux user
- Conclusion
- How to remove all files from a directory?
- 9 Answers 9
- Unix: How to delete files listed in a file
- 13 Answers 13
- Using find — Deleting all files/directories (in Linux ) except any one
- 11 Answers 11
Linux Delete All Files In Directory Using Command Line
Linux Delete All Files In Directory
The procedure to remove all files from a directory:
- Open the terminal application
- To delete everything in a directory run: rm /path/to/dir/*
- To remove all sub-directories and files: rm -r /path/to/dir/*
Let us see some examples of rm command to delete all files in a directory when using Linux operating systems.
How to remove all the files in a directory?
Suppose you have a directory called /home/vivek/data/. To list files type the ls command:
$ ls
Understanding rm command option that deleted all files in a directory
- -r : Remove directories and their contents recursively.
- -f : Force option. In other words, ignore nonexistent files and arguments, never prompt. Dangerous option. Be careful.
- -v : Verbose option. Show what rm is doing on screen.
Deleting hidden vs non-hidden files
In Linux, any file or directory that starts with a dot character called a dot file. It is to be treated as hidden file. To see hidden files pass the -a to the ls command:
ls
ls -a
ls -la
To remove all files except hidden files in a directory use:
rm /path/to/dir/*
rm -rf /path/to/dir/*
rm *
In this example, delete all files including hidden files, run:
rm -rf /path/to/dir1/<*,.*>
rm -rfv /path/to/dir1/
- No ads and tracking
- In-depth guides for developers and sysadmins at Opensourceflare✨
- Join my Patreon to support independent content creators and start reading latest guides:
- How to set up Redis sentinel cluster on Ubuntu or Debian Linux
- How To Set Up SSH Keys With YubiKey as two-factor authentication (U2F/FIDO2)
- How to set up Mariadb Galera cluster on Ubuntu or Debian Linux
- A podman tutorial for beginners – part I (run Linux containers without Docker and in daemonless mode)
- How to protect Linux against rogue USB devices using USBGuard
Join Patreon ➔
Bash remove all files from a directory including hidden files using the dotglob option
If the dotglob option set, bash includes filenames beginning with a ‘.’ in the results of pathname expansion. In other words, turn on this option to delete hidden files:
See GNU/bash man page for the shopt command online here:
man bash
help shopt
Linux Remove All Files In Directory
As I said earlier one can use the unlink command too. The syntax is:
unlink filename
For example, delete file named foo.txt in the current working directory, enter:
unlink foo.txt
It can only delete a single file at a time. You can not pass multiple files or use wildcards such as *. Therefore, I strongly recommend you use the rm command as discussed above.
Conclusion
In this quick tutorial, you learned how to remove or delete all the files in a directory using the rm command. Linux offers a few more options to find and delete files. Please see the following tutorials:
🐧 Get the latest tutorials on Linux, Open Source & DevOps via
Источник
How To: Linux / UNIX delete a file using rm command
H ow do I delete a file under a Linux / UNIX / *BSD / AIX / HP-UX operating system using command line options?
To remove or delete a file or directory in Linux, FreeBSD, Solaris, macOS, or Unix-like operating systems, use the rm command or unlink command. This page explains how to delete a given file on a Linux or Unix like system using the command line option.
Tutorial details | |
---|---|
Difficulty level | Easy |
Root privileges | No |
Requirements | rm and unlink command on Linux or Unix |
Est. reading time | 4 minutes |
Syntax: rm command to remove a file
rm (short for remove) is a Unix / Linux command which is used to delete files from a filesystem. Usually, on most filesystems, deleting a file requires write permission on the parent directory (and execute permission, in order to enter the directory in the first place). The syntax is as follows to delete the specified files and directories:
- -f : Forcefully remove file
- -r : Remove the contents of directories recursively
When rm command used just with the file names, rm deletes all given files without confirmation by the user.
- No ads and tracking
- In-depth guides for developers and sysadmins at Opensourceflare✨
- Join my Patreon to support independent content creators and start reading latest guides:
- How to set up Redis sentinel cluster on Ubuntu or Debian Linux
- How To Set Up SSH Keys With YubiKey as two-factor authentication (U2F/FIDO2)
- How to set up Mariadb Galera cluster on Ubuntu or Debian Linux
- A podman tutorial for beginners – part I (run Linux containers without Docker and in daemonless mode)
- How to protect Linux against rogue USB devices using USBGuard
Join Patreon ➔
Warning : Be careful with filenames as Unix and Linux, by default, won’t prompt for confirmation before deleting files. Always keep verified backups of all critical files and data.
Unix Remove or delete a file example
Say you have a file named abc.txt and you want to remove it:
$ rm abc.txt
Linux delete multiple files
Delete three files named foo.mp4, bar.doc, and demo.txt, run:
Linux recursively delete all files
Remove all files and sub-directories from a directory (say deltree like command from MS-DOS world), enter:
$ rm -rf mydir
Linux delete a file and prompt before every removal
To request confirmation before attempting to remove each file pass the -i option to the rm command:
$ rm -i filename
Sample outputs:
Gif 01: rm command demo
Force rm command to explain what is being done with file
Pass the -v option as follows:
$ rm -v moiz.list.txt bios-updates.doc
removed ‘moiz.list.txt’
removed ‘bios-updates.doc’
How to delete empty directories
To remove empty directory use rmdir command and not the rm command:
$ rmdir mydirectory
$ rmdir dirNameHere
$ rmdir docs
How to read a list of all files to delete from a text file
The rm command is often used in conjunction with xargs to supply a list of files to delete. Create a file called file.txt:
$ cat file.txt
List of to delete:
Now delete all file listed in file.txt, enter:
$ xargs rm
How do I delete a file named -foo.txt or a directory named -bar?
To delete a file called -foo.txt :
rm — -foo.txt
OR
rm — ./-foo.txt
To delete a directory called -bar :
rm -r -f — -bar
The two — dashes tells rm command the end of the options and rest of the part is nothing but a file or directory name begins with a dash.
Never run rm -rf / as an administrator or normal UNIX / Linux user
WARNING! These examples will delete all files on your computer if executed.
$ rm -rf /
$ rm -rf *
rm -rf (variously, rm -rf /, rm -rf *, and others) is frequently used in jokes and anecdotes about Unix disasters. The rm -rf / variant of the command, if run by an administrator, would cause the contents of every writable mounted filesystem on the computer to be deleted. Do not try these commands.
Conclusion
You learned how to delete files on Linux and Unix-like operating systems. Here are all important options for GNU rm command (read man page here)
Option | Description |
---|---|
-f | Ignore nonexistent files and arguments, never prompt |
-i | Prompt before every file removal |
-I | Prompt once before removing more than three files, or when removing recursively; less intrusive than -i, while still giving protection against most mistakes —interactive[=WHEN] prompt according to WHEN: never, once (-I), or always (-i); without WHEN, prompt always |
—one-file-system | when removing a hierarchy recursively, skip any directory that is on a file system different from that of the corresponding command line argument |
—no-preserve-root | do not treat ‘/’ specially |
—preserve-root[=all] | do not remove ‘/’ (default); with ‘all’, reject any command line argument on a separate device from its parent |
-r | remove directories and their contents recursively |
-R | same as above |
-d | rmove empty directories |
-v | Explain what is being done |
🐧 Get the latest tutorials on Linux, Open Source & DevOps via
Источник
How to remove all files from a directory?
The closest I’ve gotten is
but that doesn’t work for files that don’t have an extension.
9 Answers 9
Linux does not use extensions. It is up to the creator of the file to decide whether the name should have an extension. Linux looks at the first few bytes to figure out what kind of file it is dealing with.
To remove all non-hidden files* in a directory use:
However, this will show an error for each sub-directory, because in this mode it is only allowed to delete files.
To remove all non-hidden files and sub-directories (along with all of their contents) in a directory use:
* Hidden files and directories are those whose names start with . (dot) character, e.g.: .hidden-file or .hidden-directory/ . Note that, in Bash, if the dotglob option (which is off by default) is set, rm will act on hidden files too, because they will be included when * is expanded by the shell to provide the list of filename arguments.
To remove a folder with all its contents (including all interior folders):
To remove all the contents of the folder (including all interior folders) but not the folder itself:
or, if you want to make sure that hidden files/directories are also removed:
To remove all the «files» from inside a folder(not removing interior folders):
Warning: if you have spaces in your path, make sure to always use quotes.
is equivalent to 2 separate rm -rf calls:
To avoid this issue, you can use ‘ single-quotes ‘ (prevents all expansions, even of shell variables) or » double-quotes » (allows expansion of shell variables, but prevents other expansions):
- rm — stands for remove
- -f — stands for force which is helpful when you don’t want to be asked/prompted if you want to remove an archive, for example.
- -r — stands for recursive which means that you want to go recursively down every folder and remove everything.
Источник
Unix: How to delete files listed in a file
I have a long text file with list of file masks I want to delete
I need delete them. Tried rm `cat 1.txt` and it says the list is too long.
Found this command, but when I check folders from the list, some of them still have files xargs rm Manual rm call removes files from such folders, so no issue with permissions.
13 Answers 13
This is not very efficient, but will work if you need glob patterns (as in /var/www/*)
If you don’t have any patterns and are sure your paths in the file do not contain whitespaces or other weird things, you can use xargs like so:
Assuming that the list of files is in the file 1.txt , then do:
The -r option causes recursion into any directories named in 1.txt .
If any files are read-only, use the -f option to force the deletion:
Be cautious with input to any tool that does programmatic deletions. Make certain that the files named in the input file are really to be deleted. Be especially careful about seemingly simple typos. For example, if you enter a space between a file and its suffix, it will appear to be two separate file names:
is actually two separate files: file and .txt .
This may not seem so dangerous, but if the typo is something like this:
Then instead of deleting all files that begin with myoldfiles , you’ll end up deleting myoldfiles and all non-dot-files and directories in the current directory. Probably not what you wanted.
Источник
Using find — Deleting all files/directories (in Linux ) except any one
If we want to delete all files and directories we use, rm -rf * .
But what if i want all files and directories be deleted at a shot, except one particular file?
Is there any command for that? rm -rf * gives the ease of deletion at one shot, but deletes even my favourite file/directory.
Thanks in advance
11 Answers 11
find can be a very good friend:
find * -maxdepth 0 : select everything selected by * without descending into any directories
-name ‘b’ -prune : do not bother ( -prune ) with anything that matches the condition -name ‘b’
-o -exec rm -rf ‘<>‘ ‘;’ : call rm -rf for everything else
By the way, another, possibly simpler, way would be to move or rename your favourite directory so that it is not in the way:
Short answer
Details:
The thought process for the above command is :
- List all files (ls)
- Ignore one file named «z.txt» (grep -v «z.txt»)
- Delete the listed files other than z.txt (xargs rm)
Create 5 files as shown below:
List all files except z.txt
We can now delete(rm) the listed files by using the xargs utility :
You can type it right in the command-line or use this keystroke in the script
P.S. I suggest -i switch for rm to prevent delition of important data.
P.P.S You can write the small script based on this solution and place it to the /usr/bin (e.g. /usr/bin/rmf ). Now you can use it as and ordinary app:
The script looks like (just a sketch):
At least in zsh
could be an option, if you only want to preserve one single file.
If it’s just one file, one simple way is to move that file to /tmp or something, rm -Rf the directory and then move it back. You could alias this as a simple command.
The other option is to do a find and then grep out what you don’t want (using -v or directly using one of find s predicates) and then rm ing the remaining files.
For a single file, I’d do the former. For anything more, I’d write something custom similar to what thkala said.
In bash you have the !() glob operator, which inverts the matched pattern. So to delete everything except the file my_file_name.txt , try this:
I don’t know of such a program, but I have wanted it in the past for some times. The basic syntax would be:
The program I have in mind has three modes:
- exact matching (with the option -e )
- glob matching (default, like shown in the above example)
- regex matching (with the option -r )
It takes the patterns to be excluded from the command line, followed by the separator — , followed by the file names. Alternatively, the file names might be read from stdin (if the option -s is given), each on a line.
Such a program should not be hard to write, in either C or the Shell Command Language. And it makes a good excercise for learning the Unix basics. When you do it as a shell program, you have to watch for filenames containing whitespace and other special characters, of course.
Источник