关于linux:通过-10-个示例掌握-Linux-删除命令

40次阅读

共计 4612 个字符,预计需要花费 12 分钟才能阅读完成。

rm 是 remove 的缩写,顾名思义,rm 命令用于删除零碎中的文件和目录。如果你是 Linux 老手,那么在运行 rm 命令时肯定十分小心,因为一旦你删除了文件或目录,那么你就不能复原文件和目录的内容,尽管有一些工具和命令能够复原删除的文件,但你须要专业技能。

rm 命令的根本语法如下:

# rm <options> {files}

rm 命令选项:

(1) 删除文件

删除单个文件

[linuxtechi@cloud ~]$ rm linuxstufff.log
[linuxtechi@cloud ~]$

删除多个文件

[linuxtechi@cloud ~]$ rm file1.txt file2.txt file3.txt file4.txt
[linuxtechi@cloud ~]$

(2) 交互式删除文件

rm 命令中的 -i 选项会在删除文件前提醒,示例如下

[linuxtechi@cloud ~]$ rm -i linuxstufff.log 
rm: remove regular file‘linuxstufff.log’? y
[linuxtechi@cloud ~]$

(3) 删除空目录

rm 命令中的 -d 选项删除空目录,示例如下

[linuxtechi@cloud ~]$ ls -R appdata/
appdata/:
[linuxtechi@cloud ~]$ rm -d appdata/
[linuxtechi@cloud ~]$

linux 下也能够应用 rmdir 命令删除空目录

[linuxtechi@cloud ~]$ ls -R appdata/
appdata/:
[linuxtechi@cloud ~]$ rmdir appdata
[linuxtechi@cloud ~]$

(4) 递归删除目录

rm 命令中的 -r 选项将递归删除父目录下的所有文件和子目录。

[linuxtechi@cloud ~]$ ls -lR dbstore/
dbstore/:
total 0
-rw-rw-r--. 1 linuxtechi linuxtechi 0 Mar 26 23:59 file1.log
-rw-rw-r--. 1 linuxtechi linuxtechi 0 Mar 26 23:59 file2.log
-rw-rw-r--. 1 linuxtechi linuxtechi 0 Mar 26 23:59 file3.log
drwxrwxr-x. 2 linuxtechi linuxtechi 6 Mar 26 23:59 service

dbstore/service:
total 0
[linuxtechi@cloud ~]$ rm -r dbstore/
[linuxtechi@cloud ~]$

(5) 交互式地删除文件和子目录

rm 命令中的 -ri 选项交互删除文件和子目录,示例如下

[linuxtechi@cloud ~]$ ls -lR dbstore/
dbstore/:
total 0
-rw-rw-r--. 1 linuxtechi linuxtechi 0 Mar 27 00:02 file1.log
-rw-rw-r--. 1 linuxtechi linuxtechi 0 Mar 27 00:02 file2.log
-rw-rw-r--. 1 linuxtechi linuxtechi 0 Mar 27 00:02 file3.log
drwxrwxr-x. 2 linuxtechi linuxtechi 6 Mar 27 00:02 service

dbstore/service:
total 0
[linuxtechi@cloud ~]$ rm -ri dbstore/
rm: descend into directory‘dbstore/’? y
rm: remove regular empty file‘dbstore/file1.log’? y
rm: remove regular empty file‘dbstore/file2.log’? y
rm: remove regular empty file‘dbstore/file3.log’? y
rm: remove directory‘dbstore/service’? y
rm: remove directory‘dbstore/’? y
[linuxtechi@cloud ~]$

(6) 强制删除文件

rm 命令中的 -f 选项将强制删除文件,无论其权限如何,也将疏忽不存在的文件。

让咱们删除一个受写爱护的文件 tech.txt

[linuxtechi@cloud ~]$ ls -l tech.txt 
-r--r--r--. 1 linuxtechi linuxtechi 0 Mar 27 00:23 tech.txt
[linuxtechi@cloud ~]$
[linuxtechi@cloud ~]$ rm tech.txt 
rm: remove write-protected regular empty file‘tech.txt’?

当咱们尝试应用不带 -f 选项的 rm 命令删除写爱护文件时,它会提醒咱们删除写爱护文件。

当初尝试应用 -f 选项删除 tech.txt 文件

[linuxtechi@cloud ~]$ rm -f tech.txt 
[linuxtechi@cloud ~]$

也能够尝试删除一个不存在的文件

[linuxtechi@cloud ~]$ rm -f nonexist.txt
[linuxtechi@cloud ~]$

留神: rm 命令的 -f 选项对写爱护目录有效

示例如下,/home/linuxtechi/location/ 目录对写爱护,目录下的文件 db_stuff 不对写爱护。

[linuxtechi@cloud ~]$ ls -ld /home/linuxtechi/location/
drwxrwxr-x. 2 root root 29 Mar 27 00:43 /home/linuxtechi/location/

[linuxtechi@cloud ~]$ ls -l /home/linuxtechi/location/db_stuff 
-rw-rw-r--. 1 linuxtechi linuxtechi 17 Mar 27 00:43 /home/linuxtechi/location/db_stuff

[linuxtechi@cloud ~]$ rm -f /home/linuxtechi/location/db_stuff
rm: cannot remove‘/home/linuxtechi/location/db_stuff’: Permission denied
[linuxtechi@cloud ~]$

(7) 删除三个以上文件或递归删除前提醒一次

rm 命令中的 -I 选项在删除三个以上文件或递归删除前会提醒一次

[linuxtechi@cloud ~]$ ls -l linux_store/
total 0
-rw-rw-r--. 1 linuxtechi linuxtechi 0 Mar 27 01:07 app1.log
-rw-rw-r--. 1 linuxtechi linuxtechi 0 Mar 27 01:07 app2.log
-rw-rw-r--. 1 linuxtechi linuxtechi 0 Mar 27 01:07 app3.log
-rw-rw-r--. 1 linuxtechi linuxtechi 0 Mar 27 01:07 app4.log
-rw-rw-r--. 1 linuxtechi linuxtechi 0 Mar 27 01:07 app5.log
[linuxtechi@cloud ~]$ rm -I linux_store/app*
rm: remove 5 arguments? y
[linuxtechi@cloud ~]$

(8) 正则表达式

咱们能够在 rm 命令中应用正则表达式,示例如下

删除当前目录下从 log1 到 log5 的日志文件

[linuxtechi@cloud linux_store]$ pwd
/home/linuxtechi/linux_store
[linuxtechi@cloud linux_store]$ ll
total 0
-rw-rw-r--. 1 linuxtechi linuxtechi 0 Mar 27 01:15 log1.txt
-rw-rw-r--. 1 linuxtechi linuxtechi 0 Mar 27 01:15 log2.txt
-rw-rw-r--. 1 linuxtechi linuxtechi 0 Mar 27 01:15 log3.txt
-rw-rw-r--. 1 linuxtechi linuxtechi 0 Mar 27 01:15 log4.txt
-rw-rw-r--. 1 linuxtechi linuxtechi 0 Mar 27 01:15 log5.txt
-rw-rw-r--. 1 linuxtechi linuxtechi 0 Mar 27 01:15 log6.txt
........................................
[linuxtechi@cloud linux_store]$ 
[linuxtechi@cloud linux_store]$ rm -f log{1..5}.txt
[linuxtechi@cloud linux_store]$

Delete all the files of the current directory that ends with‘.txt’

删除当前目录下所有以“.txt”结尾的文件

[linuxtechi@cloud linux_store]$ rm -f *.txt
[linuxtechi@cloud linux_store]$

删除当前工作目录下所有扩大名为 3 个字符的文件

[linuxtechi@cloud linux_store]$ rm -f *.???
[linuxtechi@cloud linux_store]$

(9) 删除大量文件

应用 rm 命令删除大量文件,您将失去 Argument list too long 的谬误提醒

[linuxtechi@cloud linux_store]$ ls -l | wc -l
300001
[linuxtechi@cloud linux_store]$ rm *.log
-bash: /bin/rm: Argument list too long
[linuxtechi@cloud linux_store]$

要解决此问题,请应用上面的 find 命令

[linuxtechi@cloud ~]$ find ~/linux_store/ -type f -exec rm {} \;
[linuxtechi@cloud ~]$

(10) 删除以连字符 (-) 结尾的文件

假如要删除当前目录下的名为 -store 的文件

[linuxtechi@cloud linux_store]$ ll
total 0
-rw-rw-r--. 1 linuxtechi linuxtechi 0 Mar 27 02:05 -store
[linuxtechi@cloud linux_store]$ rm -store
rm: invalid option -- 's'
Try 'rm --help' for more information.
[linuxtechi@cloud linux_store]$

应用上面的命令删除此类文件

[linuxtechi@cloud linux_store]$ rm -- \ -store 
[linuxtechi@cloud linux_store]$

OR

[linuxtechi@cloud linux_store]$ rm ./\ -store 
[linuxtechi@cloud linux_store]$

我的开源我的项目

  • course-tencent-cloud(酷瓜云课堂 – gitee 仓库)
  • course-tencent-cloud(酷瓜云课堂 – github 仓库)

正文完
 0