在 Linux 中,需要删除目录文件时靠两个命令就能完成:rm 和 rmdir。乍一看它们相似,但行为却截然不同,如使用错误的命令,可能会删除远超预期的内容。
Linux rm 和 rmdir:命令概述
在执行任何删除命令之前,先要知道自己在文件系统中的位置。pwd 命令可以显示当前的工作目录,LS 会列出里面有什么。
以下是命令执行内容的快速参考:
RM 选项一览:
rm -d– 移除空目录rm -r– 递归地移除目录及其所有内容rm -f– 删除写保护文件时跳过确认提示rm -rf– 递归删除,无提示,是否写保护rm -i– 每次删除前的提示rm -I– 如果删除超过 3 个文件,则出现单一提示RM *– 多字符匹配的通配符RM?– 通配符恰好匹配一个字符
RMDIR 选项:
rmdir -p– 移除空子目录及其父目录rmdir -v– 打印目录已被移除的确认
经验法则:当你确定目录是空的,并且想防止文件意外丢失时,使用 rmdir;需要删除目录及其所有内容时则用 rm -r。
在 Linux 运行任何删除命令前,一定要先进行备份。因为这些删除命令是永久性的,没有撤销的办法。
Rmdir 删除空目录
rmdir 命令通常用于删除空目录。如果你想使用命令行工具来删除一个空目录,可以使用rmdir——如果删除的不是空目录,将会报错并返回以下错误:
rmdir: failed to remove 'Directory': Directory not empty
基本语法:
rmdir DirectoryName
要在一个命令中删除多个空目录,请将它们列为独立的参数:
rmdir Directory_1 Directory_2 Directory_3
移除子目录及其父目录
-p 选项会移除一个子目录,沿路径向上移动,如果子目录消失后父目录也空,则删除该子目录:
rmdir -p /Directory/SubDirectory
这样先移除 SubDirectory,然后移除 Directory——但前提是 Directory 此时没有其他内容。
以 -v 确认删除
-v 标志会为每个被移除的目录打印一条消息。在删除多个目录并想确认具体删除内容时非常有用:
rmdir -v Simple-Directory
rmdir: removing directory, 'Simple-Directory'
rm -r 删除非空目录
RM 是一个文件删除命令,但结合 -r(递归)后,它成为删除目录树的标准工具。递归标志会让它下降到子目录,删除所有子目录东西。
基本递归移除:
rm -r Simple-Directory
警告:这会永久删除目录及其内的所有内容。恢复需要备份。
跳过带有 -rf 的写保护提示
当目录或其内容被写保护时,rm 会暂停并在每个文件前请求确认。如果你对删除的内容有信心,-rf 会跳过所有提示:
rm -rf Simple-Directory
小心使用。递归和强制的结合是该命令最具破坏性的变体。跑之前一定要仔细检查路径。
一次删除多个目录
你可以通过一个 Linux 删除目录操作,将多个目录名作为参数传递,从而全部移除:
rm -r Directory_1 Directory_2 Directory_3
在 Linux 中使用 rm 命令删除文件
有时你想从目录中移除特定文件,但不涉及目录结构本身。
从当前工作目录中移除一个文件:
rm file.txt
一次删除多个文件:
rm file1.txt file2.txt file3.txt
通过指定路径移除不同目录中的文件:
rm dir/subdir/file.txt
带确认标志的安全删除
每次删除前都会提示 -i 标记。虽然慢一些,但如果你删除最近没检查过的文件,这样做很安全:
rm -i file1.txt file2.txt file3.txt
终端会要求每个文件填写 Y/N。如果你要删除大量文件且只想要一个确认,可以用 -I:
rm -I file1.txt file2.txt file3.txt
要跳过所有确认,包括写保护文件,请使用 -f:
rm -f file.txt
使用通配符删除多个文件
通配符让你用一个命令匹配文件组,而不是单独列出。星号可匹配任意数量的字符;问号正好对应一个。
删除当前目录中的所有.txt 文件:
rm *.txt
删除所有以字母’a’开头的文件:
rm a*
删除带有单字符扩展名的文件:
rm *.?
警告:先运行 ls,确认通配符模式匹配哪些文件后再用 rm。
快速参考:RM 与 RMDIR
rmdir– 仅限空目录,默认安全,若目录有内容则返回错误RM -D– RM 对应空目录的应用rm -r– 递归地移除非空目录;无法挽回rm -rf– 递归,无提示;只有在确定目标目标时才使用。RM -I– 互动模式;每次删除前的确认RM * / RM ?– 批次删除的通配符;运行前用LS确认
原创文章,作者:余初云,如若转载,请注明出处:https://blog.jidcy.com/jsjc/2215.html
