Linux笔记03: Linux常用命令_3.4文件和目录共用命令

 

3.4 目录和文件共用命令

  3.4.1 rm命令

    ●命令名称:rm。

    ●英文原意:remove files or directories。

    ●所在路径:/usr/bin/rm。

    ●执行权限:所有用户。

    ●功能描述:删除文件或目录。

    (1)命令格式

[root@localhost ~]#rm [选项] 文件或目录

    选项:

        -f: 强制删除(force)

        -i: 交互删除,在删除之前会询问用户

        -r: 递归删除,可以删除目录(recursive)

        -d: 删除空目录


    (2)常见用法

    ①不带选项,默认执行的是“rm -i文件名”,在删除一个文件之前会先询问是否删除。例如:

[root@localhost ~]#touch test_file

    [root@localhost ~]#rm test_file

    rm: remove regular emptyfile‘test_file’? y

    [root@localhost ~]#


    ②递归删除目录。例如:

[root@localhost ~]#mkdir-p Marvel/Avengers/Heroes

    [root@localhost ~]#rmMarvel/rm: cannot remove ‘Marvel/’: Is a directory

    [root@localhost ~]#rm-r Marvel/rm: descend into directory ‘Marvel/’? y

    rm: descend into directory ‘Marvel/Avengers’? y

    rm: remove directory ‘Marvel/Avengers/Heroes’? y

    rm: remove directory ‘Marvel/Avengers’? y

    rm: remove directory ‘Marvel/’? y

    [root@localhost ~]#


    会分别询问是否进入子目录、是否删除子目录。

    ③使用强制删除。例如:

[root@localhost ~]#mkdir-p Marvel/Avengers/Heroes

    [root@localhost ~]#rm-rf Marvel/    [root@localhost ~]#


    注意:

    ●数据强制删除之后无法恢复,除非依赖第三方的数据恢复工具,如extundelete等。但很难恢复完整的数据,一般能恢复70%~80%就很难得了。所以,与其把宝压在数据恢复上,不如养成良好的操作习惯。

    ●虽然“-rf”选项是用来删除目录的,但是删除文件也不会报错。所以,为了使用方便,一般不论是删除文件还是删除目录,都会直接使用“-rf”选项。


  3.4.2 cp命令

    ●命令名称:cp。

    ●英文原意:copy files and directories。

    ●所在路径:/usr/bin/cp。

    ●执行权限:所有用户。

    ●功能描述:复制文件和目录。

    (1)命令格式

[root@localhost ~]#cp [选项] 源文件 目标文件

    选项:

        -a: 相当于-dpr选项的集合

        -d: 如果源文件为软链接(对硬链接无效),则复制出的目标文件也为软链接

        -i: 询问,如果目标文件已经存在,则会询问是否覆盖

        -l: 把目标文件建立为源文件的硬链接文件,而不是复制源文件

        -s: 把目标文件建立为源文件的软链接文件,而不是复制源文件

        -p: 复制后,目标文件保留源文件的属性(包括所有者、所属组、权限和时间)

        -r: 递归复制,用于复制目录


    (2)常见用法

    ①复制文件。例如:

[root@localhost ~]#touch iron_man

    [root@localhost ~]#mkdir-p /Marvel/Avengers

    [root@localhost ~]#cpiron_man Marvel/Avengers/    [root@localhost ~]#


    ②复制的同时修改文件名。例如:

[root@localhost ~]#cpiron_man Marvel/Avengers/doctor_strange

    [root@localhost ~]#


    ③复制目录。例如:

[root@localhost ~]#mkdir Disney

    [root@localhost ~]#cp-r Marvel/ Disney/    [root@localhost ~]#


    ④复制软连接属性。例如:

[root@localhost ~]#ln-s Marvel/Avengers/iron_man iron_man_sln

    [root@localhost ~]# ll iron_man_sln

    lrwxrwxrwx. 1root root24Jan706:40iron_man_sln -> Marvel/Avengers/iron_man

    # 源文件本身就是一个软链接文件

    [root@localhost ~]#cp iron_man_sln iron_man_t1

    [root@localhost ~]#cp-d iron_man_sln iron_man_t2

    [root@localhost ~]# ll iron_man_t1 iron_man_t2

    -rw-r--r--.1root root0Jan706:41 iron_man_t1

    lrwxrwxrwx. 1root root24Jan706:42iron_man_t2 -> Marvel/Avengers/iron_man


    不加“-d”选项,实际复制的是软链接的源文件,而不是软链接文件。

    如果加入了“-d”选项,则会复制软链接文件。

    ⑤保留源文件属性复制

    在执行复制命令后,目标文件的时间会变成复制命令的执行时间,而不是源文件的时间。而当我们在执行数据备份、日志备份的时候,这些文件的时间可能是一个重要的参数,这就需要执行“-p”选项了。这个选项会保留源文件的属性,包括所有者、所属组和时间。例如:

[root@localhost ~]#cp-p /var/lib/mlocate/mlocate.db LaytonWang/mlocate_cp.db

    [root@localhost ~]# ll /var/lib/mlocate/mlocate.db LaytonWang/mlocate_cp.db

    -rw-r-----.1root slocate2989201Jan609:06LaytonWang/mlocate_cp.db

    -rw-r-----.1root slocate2989201Jan609:06/var/lib/mlocate/mlocate.db


    目标文件和源文件的所有属性都一致,包括时间。

    “-a”选项相当于“-dpr”选项,当我们使用“-a”选项时,目标文件和源文件的所有属性都一致,包括源文件的所有者、所属组、时间和软链接属性。使用“-a”选项来取代“-dpr”选项更加方便。

    ⑥“-l”和“-s”选项

    使用“-l”选项,目标文件会被建立为源文件的硬链接;而使用“-s”选项,则目标文件会被建立为源文件的软链接。这两个选项和“-d”选项是不同的,“-d”选项要求源文件必须是软链接,目标文件才会复制为软链接;而“-l”和“-s”选项的源文件只需是普通文件,目标文件就可以直接复制为硬链接和软链接。例如:

[root@localhost ~]#cp-l Marvel/Avengers/iron_man iron_man_h

    [root@localhost ~]#cp-s Marvel/Avengers/iron_man iron_man_s

    #使用“-l”和“-s”选项复制

    [root@localhost ~]# ll -i iron_man_h iron_man_s

      77542-rw-r--r--.2root root0Jan706:38 iron_man_h

    16797766lrwxrwxrwx.1root root24Jan707:07iron_man_s -> Marvel/Avengers/iron_man


  3.4.3 mv命令

    ●命令名称:mv。

    ●英文原意:move (rename) files。

    ●所在路径:/usr/bin/mv。

    ●执行权限:所有用户。

    ●功能描述:移动文件或改名。

    (1)命令格式

[root@localhost ~]#mv [选项] 源文件 目标文件

    选项:

        -f: 强制覆盖,如果目标文件已经存在,则不询问,直接强制覆盖

        -i: 交互移动,如果目标文件已经存在,则询问用户是否覆盖(默认选项)

        -n: 如果目标文件已经存在,则不会覆盖移动,而且不询问用户

        -v: 显示详细信息


    (2)常见用法

    ①移动文件或目录

[root@localhost ~]#mviron_man_sln LaytonWang/    [root@localhost ~]#mkdir movie

    [root@localhost ~]#mvDisney/ LaytonWang/


    移动之后,源文件或目录会被删除,类似剪切。和rm、cp不同的是,mv移动目录不需要加入“-r”选项。

    ②强制移动

    如果目标目录下已经存在同名文件,则会提示是否覆盖,需要手工确认。如果移动的同名文件较多,则需要一个一个文件进行确认,很不方便。如果我们确认需要覆盖已经存在的同名文件,则可以使用“-f”选项进行强制移动。例如:

[root@localhost ~]#touch iron_man

    [root@localhost ~]#mviron_man Marvel/Avengers/mv: overwrite ‘Marvel/Avengers/iron_man’? y

    # 目标位置已经存在同名的文件,会提示是否覆盖,因为mv命令默认执行的也是“mv-i”。

    [root@localhost ~]#touch iron_man

    [root@localhost ~]#mv-f iron_man Marvel/Avengers/    [root@localhost ~]#


    ③不覆盖移动

    如果需要移动几百个同名文件,但是不想覆盖,就可以使用“-n”选项。例如:

[root@localhost ~]#touch iron_man doctor_strange captain

    [root@localhost ~]#lsMarvel/Avengers/    doctor_strange  iron_man

    # 在Marvel/Avengers/目录下已经存在doctor_strange、iron_man文件。

    [root@localhost ~]#mv-vn iron_man doctor_strange captain Marvel/Avengers/    ‘captain’ -> ‘Marvel/Avengers/captain’


    使用了“-n”选项,则可以看到只移动了captain,而同名的doctor_strange、iron_man并没有移动(“-v”选项用于显示移动过程)。

    ④改名

    如果源文件和目标文件在同一个目录中,那就是改名。例如:

[root@localhost ~]#touch captain

    [root@localhost ~]#mv captain captain2

    # 把captain改名为captain2


小结:

    “rm”用于删除文件或目录,常用“-rf”选项进行强制删除或递归删除目录;“cp”用于复制文件或目录,常用“-a”(相当于‘-dpr’)选项复制软连接、保留原文件的属性、递归复制目录;“mv”用于移动文件、目录或改名,常用“-vf”选项显示详细信息、强制覆盖;

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,294评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,780评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,001评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,593评论 1 289
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,687评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,679评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,667评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,426评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,872评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,180评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,346评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,019评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,658评论 3 323
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,268评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,495评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,275评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,207评论 2 352

推荐阅读更多精彩内容