这一节我们继续来学习Linux中对文件和目录的操作命令

mkdir 创建目录

  1. mkdir (选项)(参数)

在Linux端可以使用mkdir来创建目录,如果你没有加其他的路径名,那么默认是在当前目录下创建目录,注意当文件夹存在时则提示不能创建

在这里说一下创建文件夹其实和windowns管理一样,要规划好如何去布局一个文件系统,在父目录下可以再创建子目录,每个目录尽量要存放相同类型的文件,这样更易于团队的管理和使用

mkdir的选项

  1. -Z:设置安全上下文,当使用SELinux时有效;
  2. -m<目标属性>或--mode<目标属性>建立目录的同时设置目录的权限;
  3. -p或--parents 若所要建立目录的上层目录目前尚未建立,则会一并建立上层目录;
  4. --version 显示版本信息。

  你也可以直接通过--help来获取选项

例如我下面创建一个文件夹

  1. [root@localhost ~]# mkdir myfolder
  2. [root@localhost ~]# ls
  3. myfolder

  

创建一个文件夹并设置权限(权限暂时还没有讲到,只是了解一下)

  1. [root@localhost ~]# mkdir -m 711 newFolder
  2. [root@localhost ~]# ll
  3. total 8
  4. drwxr-xr-x. 2 root root 4096 Apr 9 16:49 myfolder
  5. drwx--x--x. 2 root root 4096 Apr 9 16:53 newFolder

  权限是不是和之前创建的不一样了

当然你也可以直接创建多个目录(参数)

  1. [root@localhost ~]# mkdir a b c
  2. [root@localhost ~]# ls
  3. a b c

 

创建包含子目录的目录(递归创建目录)

递归创建目录需要用到 -p选项

  1. [root@localhost ~]# mkdir -p a/b/c
  2. [root@localhost ~]# ls
  3. a
  4. [root@localhost ~]# cd a
  5. [root@localhost a]# ls
  6. b
  7. [root@localhost a]# cd b
  8. [root@localhost b]# ls
  9. c
  10. [root@localhost b]# cd c

  当前路径创建了一个a,a中又创建了一个b,b中又创建了c

还可以通过列表来批量创建目录

  1. [root@localhost ~]# mkdir -p a/{1,2,3,4}
  2. [root@localhost ~]# ls
  3. a
  4. [root@localhost ~]# cd a
  5. [root@localhost a]# ls
  6. 1 2 3 4

  

tree

  1. tree(选项)(参数)

tree命令以树状图列出目录的内容

下面是tree的所有选项

  1. -a:显示所有文件和目录;
  2. -A:使用ASNI绘图字符显示树状图而非以ASCII字符组合;
  3. -C:在文件和目录清单加上色彩,便于区分各种类型;
  4. -d:先是目录名称而非内容;
  5. -D:列出文件或目录的更改时间;
  6. -f:在每个文件或目录之前,显示完整的相对路径名称;
  7. -F:在执行文件,目录,Socket,符号连接,管道名称名称,各自加上"*""/""@""|"号;
  8. -g:列出文件或目录的所属群组名称,没有对应的名称时,则显示群组识别码;
  9. -i:不以阶梯状列出文件和目录名称;
  10. -l:<范本样式> 不显示符号范本样式的文件或目录名称;
  11. -l:如遇到性质为符号连接的目录,直接列出该连接所指向的原始目录;
  12. -n:不在文件和目录清单加上色彩;
  13. -N:直接列出文件和目录名称,包括控制字符;
  14. -p:列出权限标示;
  15. -P:<范本样式> 只显示符合范本样式的文件和目录名称;
  16. -q:用“?”号取代控制字符,列出文件和目录名称;
  17. -s:列出文件和目录大小;
  18. -t:用文件和目录的更改时间排序;
  19. -u:列出文件或目录的拥有者名称,没有对应的名称时,则显示用户识别码;
  20. -x:将范围局限在现行的文件系统中,若指定目录下的某些子目录,其存放于另一个文件系统上,则将该目录予以排除在寻找范围外。

  事实上用不上,只是参考

例如我们通过mkdir创建一个目录体系,然后通过tree来查看

  1. [root@localhost a]# mkdir -p a/{1,2,3,4} b/{1,2,3} c/{1,2} d/1
  2. [root@localhost a]# ls
  3. a b c d
  4. [root@localhost a]# tree
  5. .
  6. ├── a
  7.    ├── 1
  8.    ├── 2
  9.    ├── 3
  10.    └── 4
  11. ├── b
  12.    ├── 1
  13.    ├── 2
  14.    └── 3
  15. ├── c
  16.    ├── 1
  17.    └── 2
  18. └── d
  19. └── 1
  20.  
  21. 14 directories, 0 files

  非常清晰的列出了文件的结构

注意:tree不仅会列出目录,还会列出目录中的所有文件

比如我在a下面的1文件夹创建了三个文件

  1. [root@localhost a]# tree
  2. .
  3. ├── a
  4.    ├── 1
  5.       ├── a.py
  6.       ├── b.py
  7.       └── c.py
  8.    ├── 2
  9.    ├── 3
  10.    └── 4
  11. ├── b
  12.    ├── 1
  13.    ├── 2
  14.    └── 3
  15. ├── c
  16.    ├── 1
  17.    └── 2
  18. └── d
  19. └── 1
  20.  
  21. 14 directories, 3 files

  

tree命令有很多用法,我这不一一解释了,你可以按照上面的选项去尝试一下

cp 复制命令

  1. cp(选项)(参数)

cp命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录。它可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下。cp命令还支持同时复制多个文件,当一次复制多个文件时,目标文件参数必须是一个已经存在的目录,否则将出现错误。

cp的一些选项

  1. -a:此参数的效果和同时指定"-dpR"参数相同;
  2. -d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录;
  3. -f:强行复制文件或目录,不论目标文件或目录是否已存在;
  4. -i:覆盖既有文件之前先询问用户;
  5. -l:对源文件建立硬连接,而非复制文件;
  6. -p:保留源文件或目录的属性;
  7. -R/r:递归处理,将指定目录下的所有文件与子目录一并处理;
  8. -s:对源文件建立符号连接,而非复制文件;
  9. -u:使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时,才复制文件;
  10. -S:在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀;
  11. -b:覆盖已存在的文件目标前将目标文件备份;
  12. -v:详细显示命令执行的操作。

  

cp的参数其实和mv有点类似,都是需要两个参数,一个是源文件路径,一个目标路径,只是mv是移动,文件数量并没有变,而cp命令是复制一个文件或目录

下面我们通过一个例子来熟悉以下这个命令

把a.py复制到a文件夹中

  1. [root@localhost ~]# ls
  2. a a.py
  3. [root@localhost ~]# cp a.py a/
  4. [root@localhost ~]# ls
  5. a a.py
  6. [root@localhost ~]# cd a
  7. [root@localhost a]# ls
  8. a.py

  

注意,同mv命令一样,肯定是会用到相对文件路径的," . "代表当前文件路径," .. "代表上一层文件路径," ~ "代表家目录

比如把文件复制到当前文件夹,并改名

  1. [root@localhost ~]# ls
  2. a.py
  3. [root@localhost ~]# cp a.py b.py
  4. [root@localhost ~]# ls
  5. a.py b.py

或是从其他文件路径复制到当前路径

  1. [root@localhost b]# tree /root
  2. /root
  3. ├── a
  4.    └── a.py
  5. └── b
  6.  
  7. 2 directories, 1 file
  8. [root@localhost b]# cp ../a/a.py .
  9. [root@localhost b]# tree /root
  10. /root
  11. ├── a
  12.    └── a.py
  13. └── b
  14. └── a.py
  15.  
  16. 2 directories, 2 files

  

当要复制多个文件时或是一个目录时,这时就要用到-r 递归处理

  1. [root@localhost b]# pwd
  2. /root/b
  3. [root@localhost b]# tree /root
  4. /root
  5. ├── a
  6.    ├── 1.py
  7.    ├── 2.py
  8.    └── 3.py
  9. ├── b
  10. └── c
  11.  
  12. 3 directories, 3 files
  13. [root@localhost b]# cp -r ../a .
  14. [root@localhost b]# tree /root
  15. /root
  16. ├── a
  17.    ├── 1.py
  18.    ├── 2.py
  19.    └── 3.py
  20. ├── b
  21.    └── a
  22.    ├── 1.py
  23.    ├── 2.py
  24.    └── 3.py
  25. └── c

  将a整个目录都复制过来了

有时候我们在复制多个文件时,很有可能会遇到有文件重复,这时我们就可以使用 -i 选项交互式进行cp命令,也就是在覆盖既有文件之前先询问用户

  1. [root@localhost b]# tree /root
  2. /root
  3. ├── a
  4.    ├── a.py
  5.    └── b.py
  6. ├── b
  7.    └── a.py
  8. └── c
  9.  
  10. 3 directories, 3 files
  11. [root@localhost b]# cp -i ../a/a.py .
  12. cp: overwrite `./a.py'? y #y代表的是yes

  

如果文件很多时,而且重名文件也很多,那么你就可能需要不停的按y或yes,这样很麻烦

  1. cp aaa/* /bbb
  2. 复制目录aaa下所有到/bbb目录下,这时如果/bbb目录下有和aaa同名的文件,需要按Y来确认并且会略过aaa目录下的子目录。
  3.  
  4. cp -r aaa/* /bbb
  5. 这次依然需要按Y来确认操作,但是没有忽略子目录。
  6.  
  7. cp -r -a aaa/* /bbb
  8. 依然需要按Y来确认操作,并且把aaa目录以及子目录和文件属性也传递到了/bbb。
  9.  
  10. \cp -r -a aaa/* /bbb
  11. 成功,没有提示按Y、传递了目录属性、没有略过目录。

  

  

05_Linux目录文件操作命令2_我的Linux之路的更多相关文章

  1. Linux学习总结(5)——CentOS常用的目录文件操作命令

    CentOS常用的目录文件操作命令 一.路径操作的CentOS常用命令  cd pwd  NO1. 显示当前路径  [root@rehat root]# pwd  NO2. 返回用户主目录  [roo ...

  2. 04_Linux目录文件操作命令1(mv ls cd...)_我的Linux之路

    上一节已经给大家讲了Linux的目录结构,相信大家已经对Linux的整个目录结构有所了解 现实中,服务器(包含Linux,Unix,windows server)一般都摆放在机房里,因为一个机房摆放了 ...

  3. Linux常用命令详解-目录文件操作命令

    来源:https://www.linuxidc.com/Linux/2018-04/151801.htm 现实中,服务器(包含Linux,Unix,Windows Server)一般都摆放在机房里,因 ...

  4. 07_Linux目录文件操作命令4解压缩,文件查找_我的Linux之路

    这一节还是一样学习操作目录文件的命令 在这一节,我会讲到解压压缩tar以及zip命令,以及文本查找命令grep tar 打包压缩命令 tar命令可以为linux的文件和目录创建档案 首先要弄清两个概念 ...

  5. [Python]处理windows下多级目录文件,上传到Linux服务器

    #-*- coding: utf-8 -*- __author__ = 'tsbc' import sys reload(sys) sys.setdefaultencoding('utf-8') im ...

  6. 06_Linux目录文件操作命令3查找命令_我的Linux之路

    上几节已经大致跟大家说了在Linux端文件目录操作的一些命令 这篇随笔,我们继续来学习对文件目录的操作命令 对文件或目录进行查找的命令 find 指定目录下查找文件 find(选项)(参数) find ...

  7. Linux文件和目录常用操作命令(40个)

    1.ls(list) [命令作用] 列出文件和目录 [命令语法] ls [选项] [参数] [常用选项] -l 以长格式显示(文件或目录的类型.权限.软硬链接的次数.属主.属组.大小.时间.文件名) ...

  8. Linux之目录基本操作命令

    Linux之目录基本操作命令 目录基本操作命令 1.tree命令 tree命令以树状图列出目录的内容. 语法 tree(选项)(参数) 选项 1.-a显示所有文件和目录 2.-A使用ASNI绘图字符显 ...

  9. linux中常见的文件操作命令

    由于经常在linux发布工程进行测试,所以要用到linux一些文件操作命令,再此进行总结,以便以后忘记的时候查看. 改变目录:cd 回到家目录 cd或者cd~ 查看当前目录:pwd 查看目录下的文件的 ...

随机推荐

  1. zabbix添加自定义监控项

    zabbix添加自定义监控项 author:headsen  chen   2017-10-16  17:23:17 个人原创,转载请注明作者,出处,否则依法追究法律责任 主机端配置: 首先安装好za ...

  2. java语言与jvm虚拟机简介

    一.java语言 1.1 支持面向对象编程oop 强调支持,因为java同样可以面向过程编程. oop的三大特性是:封装.继承.多态. 封装主要针对成员变量而言,oop的思想要求成员变量均为私有,不应 ...

  3. 在使用document.getElementById('xxx').files[0]时,关于计算图片大小

    在使用文件上传属性时,一直好奇图片上传的大小时如何计算的,最近在使用中认识到的计算方式:  首先,图片大小的存储基本单位是字节(byte).每个字节是由8个比特(bit)组成.所以,一个字节在十进制中 ...

  4. 简单模拟struts2及struts2的处理流程介绍

    用了几天模拟struts2,最后结果还是很成功的,也基本没有什么遇上比较难解决的问题,万事开头难,在最开始的时候无从下手,看着下面这张struts2工作流程图配合着网上的博客看了一天终于有了眉目. 看 ...

  5. Java设计模式-责任链模式

    提出问题: 最初接触责任链模式就是在struts2中,在当时学的时候看了一眼,大概知道了原理,最近在复习,模拟struts2,说是模拟只是大体模拟了struts2的工作流程,很多东西都是写死的,只是为 ...

  6. TPYBoard v102 DIY照相机(视频和制作流程)

    前段时间的帖子,利用TPYBoard v102做的DIY照相机,周末实物终于做出来了,加了两个按键模块和一个5110,做的有点糙啊----望大家勿怪,哈哈哈.拍出来图片还算清晰,串口摄像头模块用的30 ...

  7. ngix_http_stub_status_module

    1.ngx_http_stub_status_module 是一个 Nginx 的内置 HTTP 模块,该模块可以提供 Nginx 的状态信息.默认情况下这个模块是不被编译进来的,所以在编译 Ngin ...

  8. Algorithm --> 阶乘和因子

    阶乘和因子 要求:输入正整数n(1<n <101), 把阶乘n!=1x2x3x...xn分解成素因子相乘的形式,从小到大输出各个素数(2,3,5,...)的指数. 例如825=3x52x1 ...

  9. React Native 轻松集成统计功能(Android 篇)

    关于推送的集成请参考这篇文章,本篇文章将引导你集成统计功能,只需要简单的三个步骤就可以集成统计功能. 第一步 安装 在你的项目路径下执行命令: npm install janalytics-react ...

  10. I know 项目Alpha冲刺随笔集

    Alpha冲刺 Day 1 Alpha冲刺 Day 2 Alpha冲刺 Day 3 Alpha冲刺 Day 4 Alpha冲刺 Day 5 Alpha冲刺 Day 6 Alpha冲刺 Day 7 Al ...