linux的rm命令 shell中,unlink和rm命令有什么区别

温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
【原文 /charmitem/blog/item/701c3c32b63f33e21b4cff77.html 】 例:删除/home/raven下,包括子目录里所有名为abc.txt的文件: find /home/raven -name abc.txt | xargs rm -rf 如果不使用xargs,则为: find /home/raven -name abc.txt -exec rm -fv {} \; 前言:关于find命令 由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限。
在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间(这里是指30G字节以上的文件系统)。
一、find 命令格式
1、find命令的一般形式为; find pathname -options [-print -exec -ok ...]
2、find命令的参数; pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。 -print: find命令将匹配的文件输出到标准输出。 -exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' { } \;,注意{&& }和\;之间的空格。 -ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
3、find命令选项 -name
按照文件名查找文件。
-perm 按照文件权限来查找文件。
-prune 使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命令忽略。
-user 按照文件属主来查找文件。
-group 按照文件所属的组来查找文件。
-mtime -n +n 按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前。find命令还有-atime和-ctime 选项,但它们都和-m time选项。
-nogroup 查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在。
-nouser 查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在。 -newer file1 ! file2
查找更改时间比文件file1新但比文件file2旧的文件。 -type
查找某一类型的文件,诸如:
b - 块设备文件。 d - 目录。 c - 字符设备文件。 p - 管道文件。 l - 符号链接文件。 f - 普通文件。
-size n:[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计。 -depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。 -fstype:查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/etc/fstab中找到,该配置文件中包含了本系统中有关文件系统的信息。
-mount:在查找文件时不跨越文件系统mount点。 -follow:如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。 -cpio:对匹配的文件使用cpio命令,将这些文件备份到磁带设备中。 另外,下面三个的区别: && -amin n   查找系统中最后N分钟访问的文件
  -atime n   查找系统中最后n*24小时访问的文件
  -cmin n   查找系统中最后N分钟被改变文件状态的文件
  -ctime n   查找系统中最后n*24小时被改变文件状态的文件
&&  -mmin n   查找系统中最后N分钟被改变文件数据的文件
  -mtime n   查找系统中最后n*24小时被改变文件数据的文件
4、使用exec或ok来执行shell命令 使用find时,只要把想要的操作写在一个文件里,就可以用exec来配合find查找,很方便的 在有些操作系统中只允许-exec选项执行诸如l s或ls -l这样的命令。大多数用户使用这一选项是为了查找旧文件并删除它们。建议在真正执行rm命令删除文件之前,最好先用ls命令看一下,确认它们是所要删除的文件。 exec选项后面跟随着所要执行的命令或脚本,然后是一对儿{ },一个空格和一个\,最后是一个分号。为了使用exec选项,必须要同时使用print选项。如果验证一下find命令,会发现该命令只输出从当前路径起的相对路径及文件名。 例如:为了用ls -l命令列出所匹配到的文件,可以把ls -l命令放在find命令的-exec选项中 # find . -type f -exec ls -l { } \; -rw-r--r--&&& 1 root&&&& root&&&&&&& -02-25 ./conf/httpd.conf -rw-r--r--&&& 1 root&&&& root&&&&&&& -02-25 ./conf/magic -rw-r--r--&&& 1 root&&&& root&&&&&&&&& 180
./conf.d/README 上面的例子中,find命令匹配到了当前目录下的所有普通文件,并在-exec选项中使用ls -l命令将它们列出。 在/logs目录中查找更改时间在5日以前的文件并删除它们: $ find logs -type f -mtime +5 -exec rm { } \;
记住:在shell中用任何方式删除文件之前,应当先查看相应的文件,一定要小心!当使用诸如mv或rm命令时,可以使用-exec选项的安全模式。它将在对每个匹配到的文件进行操作之前提示你。 在下面的例子中, find命令在当前目录中查找所有文件名以.LOG结尾、更改时间在5日以上的文件,并删除它们,只不过在删除之前先给出提示。 $ find . -name "*.conf" -mtime +5 -ok rm { } \; & rm ... ./conf/httpd.conf & ? n 按y键删除文件,按n键不删除。 任何形式的命令都可以在-exec选项中使用。 在下面的例子中我们使用grep命令。find命令首先匹配所有文件名为“ passwd*”的文件,例如passwd、passwd.old、passwd.bak,然后执行grep命令看看在这些文件中是否存在一个sam用户。 # find /etc -name "passwd*" -exec grep "sam" { } \; sam:x:501:501::/usr/sam:/bin/bash
二、find命令的例子;
1、查找当前用户主目录下的所有文件: 下面两种方法都可以使用 $ find $HOME -print $ find ~ -print
2、让当前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件; $ find . -type f -perm 644 -exec ls -l { } \;
3、为了查找系统中所有文件长度为0的普通文件,并列出它们的完整路径; $ find / -type f -size 0 -exec ls -l { } \;
4、查找/var/logs目录中更改时间在7日以前的普通文件,并在删除之前询问它们; $ find /var/logs -type f -mtime +7 -ok rm { } \;
5、为了查找系统中所有属于root组的文件; $find . -group root -exec ls -l { } \; -rw-r--r--&&& 1 root&&&& root&&&&&&&&& 595 10月 31 01:09 ./fie1
6、find命令将删除当目录中访问时间在7日以来、含有数字后缀的admin.log文件。 该命令只检查三位数字,所以相应文件的后缀不要超过999。先建几个admin.log*的文件 ,才能使用下面这个命令 $ find . -name "admin.log[0-9][0-9][0-9]" -atime -7 -ok rm { } \; & rm ... ./admin.log001 & ? n & rm ... ./admin.log002 & ? n & rm ... ./admin.log042 & ? n & rm ... ./admin.log942 & ? n
7、为了查找当前文件系统中的所有目录并排序; $ find . -type d | sort
8、为了查找系统中所有的rmt磁带设备; $ find /dev/rmt -print
三、xargs xargs - build and execute command lines from standard input 在使用find命令的-exec选项处理匹配到的文件时, find命令将所有匹配到的文件一起传递给exec执行。但有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出现 溢出错误。错误信息通常是“参数列太长”或“参数列溢出”。这就是xargs命令的用处所在,特别是与find命令一起使用。
find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去。
在有些系统中,使用-exec选项会为处理每一个匹配到的文件而发起一个相应的进程,并非将匹配到的文件全部作为参数一次执行;这样在有些情况下就会出现进程过多,系统性能下降的问题,因而效率不高;
而使用xargs命令则只有一个进程。另外,在使用xargs命令时,究竟是一次获取所有的参数,还是分批取得参数,以及每一次获取参数的数目都会根据该命令的选项及系统内核中相应的可调参数来确定。 来看看xargs命令是如何同find命令一起使用的,并给出一些例子。 下面的例子查找系统中的每一个普通文件,然后使用xargs命令来测试它们分别属于哪类文件 #find . -type f -print | xargs file ./.kde/Autostart/Autorun.desktop: UTF-8 Unicode English text ./.kde/Autostart/.directory:&&&&& ISO-8859 text\ ...... 在整个系统中查找内存信息转储文件(core dump) ,然后把结果保存到/tmp/core.log 文件中: $ find / -name "core" -print | xargs echo "" &/tmp/core.log 上面这个执行太慢,我改成在当前目录下查找 #find . -name "file*" -print | xargs echo "" & /temp/core.log # cat /temp/core.log ./file6 在当前目录下查找所有用户具有读、写和执行权限的文件,并收回相应的写权限: # ls -l drwxrwxrwx&&& 2 sam&&&&& adm&&&&&&&&& 4096 10月 30 20:14 file6 -rwxrwxrwx&&& 2 sam&&&&& adm&&&&&&&&&&&& 0 10月 31 01:01 http3.conf -rwxrwxrwx&&& 2 sam&&&&& adm&&&&&&&&&&&& 0 10月 31 01:01 httpd.conf
# find . -perm -7 -print | xargs chmod o-w # ls -l drwxrwxr-x&&& 2 sam&&&&& adm&&&&&&&&& 4096 10月 30 20:14 file6 -rwxrwxr-x&&& 2 sam&&&&& adm&&&&&&&&&&&& 0 10月 31 01:01 http3.conf -rwxrwxr-x&&& 2 sam&&&&& adm&&&&&&&&&&&& 0 10月 31 01:01 httpd.conf 用grep命令在所有的普通文件中搜索hostname这个词: # find . -type f -print | xargs grep "hostname" ./httpd1.conf:#&&&& different IP addresses or hostnames and have them handled by the ./httpd1.conf:# VirtualHost: If you want to maintain multiple domains/hostnames on your 用grep命令在当前目录下的所有普通文件中搜索hostnames这个词: # find . -name \* -type f -print | xargs grep "hostnames" ./httpd1.conf:#&&&& different IP addresses or hostnames and have them handled by the ./httpd1.conf:# VirtualHost: If you want to maintain multiple domains/hostnames on your 注意,在上面的例子中, \用来取消find命令中的*在shell中的特殊含义。 find命令配合使用exec和xargs可以使用户对所匹配到的文件执行几乎所有的命令。
四、find 命令的参数
下面是find一些常用参数的例子,有用到的时候查查就行了,像上面前几个贴子,都用到了其中的的一些参数,也可以用man或查看论坛里其它贴子有find的命令手册
1、使用name选项 文件名选项是find命令最常用的选项,要么单独使用该选项,要么和其他选项一起使用。 可以使用某种文件名模式来匹配文件,记住要用引号将文件名模式引起来。 不管当前路径是什么,如果想要在自己的根目录$HOME中查找文件名符合*.txt的文件,使用~作为 'pathname'参数,波浪号~代表了你的$HOME目录。 $ find ~ -name "*.txt" -print 想要在当前目录及子目录中查找所有的‘ *.txt’文件,可以用: $ find . -name "*.txt" -print 想要的当前目录及子目录中查找文件名以一个大写字母开头的文件,可以用: $ find . -name "[A-Z]*" -print 想要在/etc目录中查找文件名以host开头的文件,可以用: $ find /etc -name "host*" -print 想要查找$HOME目录中的文件,可以用: $ find ~ -name "*" -print 或find . -print 要想让系统高负荷运行,就从根目录开始查找所有的文件。 $ find / -name "*" -print
如果想在当前目录查找文件名以两个小写字母开头,跟着是两个数字,最后是.txt的文件,下面的命令就能够返回名为ax37.txt的文件: $find . -name "[a-z][a-z][0--9][0--9].txt" -print
2、用perm选项 按照文件权限模式用-perm选项,按文件权限模式来查找文件的话。最好使用八进制的权限表示法。 如在当前目录下查找文件权限位为755的文件,即文件属主可以读、写、执行,其他用户可以读、执行的文件,可以用: $ find . -perm 755 -print 还有一种表达方法:在八进制数字前面要加一个横杠-,表示都匹配,如-007就相当于777,-006相当于666 # ls -l -rwxrwxr-x&&& 2 sam&&&&& adm&&&&&&&&&&&& 0 10月 31 01:01 http3.conf -rw-rw-rw-&&& 1 sam&&&&& adm&&&&&&&& 34890 10月 31 00:57 httpd1.conf -rwxrwxr-x&&& 2 sam&&&&& adm&&&&&&&&&&&& 0 10月 31 01:01 httpd.conf drw-rw-rw-&&& 2 gem&&&&& group&&&&&&& 4096 10月 26 19:48 sam -rw-rw-rw-&&& 1 root&&&& root&&&&&&&& 2792 10月 31 20:19 temp
# find . -perm 006 # find . -perm -006 ./sam ./httpd1.conf ./temp -perm mode:文件许可正好符合mode -perm +mode:文件许可部分符合mode -perm -mode: 文件许可完全符合mode
3、忽略某个目录
如果在查找文件时希望忽略某个目录,因为你知道那个目录中没有你所要查找的文件,那么可以使用-prune选项来指出需要忽略的目录。在使用-prune选项时要当心,因为如果你同时使用了-depth选项,那么-prune选项就会被find命令忽略。 如果希望在/apps目录下查找文件,但不希望在/apps/bin目录下查找,可以用: $ find /apps -path "/apps/bin" -prune -o -print
4、使用find查找文件的时候怎么避开某个文件目录 比如要在/usr/sam目录下查找不在dir1子目录之内的所有文件 find /usr/sam -path "/usr/sam/dir1" -prune -o -print find [-path ..] [expression] 在路径列表的后面的是表达式 -path "/usr/sam" -prune -o -print 是 -path "/usr/sam" -a -prune -o -print 的简写表达式按顺序求值, -a 和 -o 都是短路求值,与 shell 的 && 和 || 类似如果 -path "/usr/sam" 为真,则求值 -prune , -prune 返回真,与逻辑表达式为真;否则不求值 -prune,与逻辑表达式为假。如果 -path "/usr/sam" -a -prune 为假,则求值 -print ,-print返回真,或逻辑表达式为真;否则不求值 -print,或逻辑表达式为真。 这个表达式组合特例可以用伪码写为 if -path "/usr/sam" then &&&&&&&&& -prune else &&&&&&&&& -print 避开多个文件夹 find /usr/sam \( -path /usr/sam/dir1 -o -path /usr/sam/file1 \) -prune -o -print 圆括号表示表达式的结合。 \ 表示引用,即指示 shell 不对后面的字符作特殊解释,而留给 find 命令去解释其意义。 查找某一确定文件,-name等选项加在-o 之后 #find /usr/sam \(-path /usr/sam/dir1 -o -path /usr/sam/file1 \) -prune -o -name "temp" -print
5、使用user和nouser选项 按文件属主查找文件,如在$HOME目录中查找文件属主为sam的文件,可以用: $ find ~ -user sam -print 在/etc目录下查找文件属主为uucp的文件: $ find /etc -user uucp -print
为了查找属主帐户已经被删除的文件,可以使用-nouser选项。这样就能够找到那些属主在/etc/passwd文件中没有有效帐户的文件。在使用-nouser选项时,不必给出用户名; find命令能够为你完成相应的工作。 例如,希望在/home目录下查找所有的这类文件,可以用: $ find /home -nouser -print
6、使用group和nogroup选项 就像user和nouser选项一样,针对文件所属于的用户组, find命令也具有同样的选项,为了在/apps目录下查找属于gem用户组的文件,可以用: $ find /apps -group gem -print 要查找没有有效所属用户组的所有文件,可以使用nogroup选项。下面的find命令从文件系统的根目录处查找这样的文件 $ find / -nogroup-print
7、按照更改时间或访问时间等查找文件
如果希望按照更改时间来查找文件,可以使用mtime,atime或ctime选项。如果系统突然没有可用空间了,很有可能某一个文件的长度在此期间增长迅速,这时就可以用mtime选项来查找这样的文件。 用减号-来限定更改时间在距今n日以内的文件,而用加号+来限定更改时间在距今n日以前的文件。 希望在系统根目录下查找更改时间在5日以内的文件,可以用: $ find / -mtime -5 -print 为了在/var/adm目录下查找更改时间在3日以前的文件,可以用: $ find /var/adm -mtime +3 -print
阅读(14325)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'linux 下结合find 和 rm 删除大量文件',
blogAbstract:'
linux&下结合find&和&rm&删除大量文件&&【转发博文】
( 10:55:34)
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}网页设计教程与开发
提供各种常见网页效果
提供各种各样的设计教程
装扮QQ,让QQ变得更酷
设计参考,提高自升水平
学习服务器和操作系统
提供各种素材和工具
收藏学习资料
您现在的位置:&&>>&&>>&&>>&正文
详解Linux中rm与rmdir删除命令的用法
&  rm命令
  用法:rm [选项]... 文件...
  删除 (unlink) 文件。
  -f, --force 强制删除。忽略不存在的文件,不提示确认
  -i 在删除前需要确认
  -I 在删除超过三个文件或者递归删除前要求确认。此选项比-i 提
  示内容更少,但同样可以阻止大多数错误发生
  --interactive[=WHEN] 根据指定的WHEN 进行确认提示:never,once (-I),
  或者always (-i)。如果此参数不加WHEN 则总是提示
  --one-file-system 递归删除一个层级时,跳过所有不符合命令行参
  数的文件系统上的文件
  --no-preserve-roo 不特殊对待&/&
  --preserve-root 不允许删除&/&(默认)
  -r, -R, --recursive 递归删除目录及其内容
  -v, --verbose 详细显示进行的步骤
  --help 显示此帮助信息并退出
  --version 显示版本信息并退出
  默认时,rm 不会删除目录。使用--recursive(-r 或-R)选项可删除每个给定
  的目录,以及其下所有的内容。
  要删除第一个字符为&-&的文件 (例如&-foo&),请使用以下方法之一:
  代码如下:
  rm -- -foo
  rm ./-foo
  请注意,如果使用rm 来删除文件,通常仍可以将该文件恢复原状。如果想保证
  该文件的内容无法还原,请考虑使用shred。
  代码如下:
  [root@localhost ~]# rm test.php #删除文件需要确认
& p&[root@localhost ~]#
rm -f test.php #强制删除文件不确认
& p&[root@localhost ~]# rm -rfv ./test #强制删除当前的test目录,并显示删除的详细过程
  rmdir命令
  用法:rmdir [选项]... 目录...
  删除指定的空目录。
  --ignore-fail-on-non-empty
  忽略仅由目录非空产生的所有错误
  -p, --parents 删除指定目录及其上级文件夹,例如&rmdir -p a/b/c'&
  与&rmdir a/b/c a/b a'& 基本相同
  -v, --verbose 输出处理的目录详情
  --help 显示此帮助信息并退出
  --version 显示版本信息并退出
  代码如下:
  [root@localhost ~]# rmdir test #删除test目录,注意必须是空目录
p&[root@localhost ~]# rmdir -p a/b/c #删除指定目录及其上级文件夹
转载请注明:破洛洛(谢谢合作)
上一篇文章: 下一篇文章:
网友评论:5790人阅读
C语言(2)
Linux(15)
每一个文件,都可以通过一个struct stat的结构体来获得文件信息,其中一个成员st_nlink代表文件的链接数。
struct stat {
&&&&&&&&&&&&&& dev_t&&&& st_&&&& /* ID of device containing file */
&&&&&&&&&&&&&& ino_t&&&& st_&&&& /* inode number */
&&&&&&&&&&&&&& mode_t&&& st_&&& /* protection */
&&&&&&&&&&&&&& nlink_t&& st_&& /* number of hard links */
&&&&&&&&&&&&&& uid_t&&&& st_&&&& /* user ID of owner */
&&&&&&&&&&&&&& gid_t&&&& st_&&&& /* group ID of owner */
&&&&&&&&&&&&&& dev_t&&&& st_&&& /* device ID (if special file) */
&&&&&&&&&&&&&& off_t&&&& st_&&& /* total size, in bytes */
&&&&&&&&&&&&&& blksize_t st_ /* blocksize for file system I/O */
&&&&&&&&&&&&&& blkcnt_t& st_& /* number of 512B blocks allocated */
&&&&&&&&&&&&&& time_t&&& st_&& /* time of last access */
&&&&&&&&&&&&&& time_t&&& st_&& /* time of last modification */
&&&&&&&&&&&&&& time_t&&& st_&& /* time of last status change */
&&&&&&&&&& };
&&&&&&当通过shell的touch命令或者在程序中open一个带有O_CREAT的不存在的文件时,文件的链接数为1。
&&&&&&通常open一个已存在的文件不会影响文件的链接数。open的作用只是使调用进程与文件之间建立一种访问关系,即open之后返回fd,调用进程可以通过fd来read、write 、 ftruncate等等一系列对文件的操作。
&&&&&&close()就是消除这种调用进程与文件之间的访问关系。自然,不会影响文件的链接数。在调用close时,内核会检查打开该文件的进程数,如果此数为0,进一步检查文件的链接数,如果这个数也为0,那么就删除文件内容。
&&&&&&link函数创建一个新目录项,并且增加一个链接数。
&&&&&&unlink函数删除目录项,并且减少一个链接数。如果链接数达到0并且没有任何进程打开该文件,该文件内容才被真正删除。如果在unlilnk之前没有close,那么依旧可以访问文件内容。
&&&&&&综上所诉,真正影响链接数的操作是link、unlink以及open的创建。
&&&&&&删除文件内容的真正含义是文件的链接数为0,而这个操作的本质完成者是unlink。close能够实施删除文件内容的操作,必定是因为在close之前有一个unlink操作。
&&&&&举个例子简单说明:通过shell&& touchtest.txt
&1、stat(&test.txt&,&buf);
&&&&&printf(&1.link=%d\n&,buf.st_nlink);//未打开文件之前测试链接数
&2、fd=open(&test.txt&,O_RDONLY);//打开已存在文件test.txt
&&&&&stat(&test.txt&,&buf);
&&&&&printf(&2.link=%d\n&,buf.st_nlink);//测试链接数
&3、close(fd);//关闭文件test.txt
&&&&&stat(&test.txt&,&buf);
&&&&&printf(&3.link=%d\n&,buf.st_nlink);//测试链接数
&4、link(&test.txt&,&test2.txt&);//创建硬链接test2.txt
&&&&&&stat(&test.txt&,&buf);
&&&&& printf(&4.link=%d\n&,buf.st_nlink);//测试链接数
&5、unlink(&test2.txt&);//删除test2.txt
&&&&&stat(&test.txt&,&buf);
&&&&&printf(&5.link=%d\n&,buf.st_nlink);//测试链接数
6、重复步骤2& //重新打开test.txt
7、unlink(&test.txt&);//删除test.txt
&&&&fstat(fd,&buf);
&&&&printf(&7.link=%d\n&,buf.st_nlink);//测试链接数
8、close(fd);//此步骤可以不显示写出,因为进程结束时,打开的文件自动被关闭。
&&&顺次执行以上8个步骤,结果如下:
&&&1.link=1
&&&2.link=1&&&//open不影响链接数
&&&3.link=1&&&//close不影响链接数
&&&4.link=2&&&//link之后链接数加1
&&&5.link=1&&&//unlink后链接数减1
&&&2.link=1&&&//重新打开& 链接数不变
&&&7.link=0&&&//unlink之后再减1,此处我们改用fstat函数而非stat,因为unlilnk已经删除文件名,所以不可以通过&&文件名访问,但是fd仍然是打开着的,文件内容还没有被真正删除,依旧可以使用fd获得文件信息。
&& 执行步骤8,文件内容被删除。。。。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:144978次
排名:千里之外
原创:10篇
转载:18篇
学生时代参加各种比赛,获得过全国一等奖,进学校的几个实验室打工,写论文的,申请专利,梦想创业终于失败,毕业在读研和工作的选择下,最终选择工作,现在在某五百强敲代码,在这里将自己所学的梳理并分享给大家
(2)(2)(16)(1)(7)您的浏览器已经禁用了脚本,这会严重影响您正常使用本站的功能,请开启!
当前位置: &
rm命令可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉。对于链接文件,只是删除整个链接文件,而原有文件保持不变。
注意:使用rm命令要格外小心。因为一旦删除了一个文件,就无法再恢复它。所以,在删除文件之前,最好再看一下文件的内容,确定是否真要删除。rm命令可以用-i选项,这个选项在使用文件扩展名字符删除多个文件时特别有用。使用这个选项,系统会要求你逐一确定是否要删除。这时,必须输入y并按Enter键,才能删除文件。如果仅按Enter键或其他字符,文件不会被删除。
rm (选项)(参数)
-d:直接把欲删除的目录的硬连接数据删除成0,删除该目录;
-f:强制删除文件或目录;
-i:删除已有文件或目录之前先询问用户;
-r或-R:递归处理,将指定目录下的所有文件与子目录一并处理;
--preserve-root:不对根目录进行递归操作;
-v:显示指令的详细执行过程。
文件:指定被删除的文件列表,如果参数中含有目录,则必须加上-r或者-R选项。
交互式删除当前目录下的文件和example
rm -i test example
Remove test ?n(不删除文件test)
Remove example ?y(删除文件example)
删除当前目录下除隐含文件外的所有文件和子目录
应注意,这样做是非常危险的!
最近更新的命令
在Linux命令大全(man.linuxde.net)可以查询您所需要的Linux命令教程和相关实例。如果您觉得本站内容对您有所帮助,请推荐给更多需要帮助的人。

我要回帖

更多关于 linux下rm命令 的文章

 

随机推荐