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

mkdir 创建目录

mkdir (选项)(参数)

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

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

mkdir的选项

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

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

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

[root@localhost ~]# mkdir myfolder
[root@localhost ~]# ls
myfolder

  

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

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

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

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

[root@localhost ~]# mkdir a b c
[root@localhost ~]# ls
a b c

 

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

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

[root@localhost ~]# mkdir -p a/b/c
[root@localhost ~]# ls
a
[root@localhost ~]# cd a
[root@localhost a]# ls
b
[root@localhost a]# cd b
[root@localhost b]# ls
c
[root@localhost b]# cd c

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

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

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

  

tree

tree(选项)(参数)

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

下面是tree的所有选项

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

  事实上用不上,只是参考

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

[root@localhost a]# mkdir -p a/{1,2,3,4} b/{1,2,3} c/{1,2} d/1
[root@localhost a]# ls
a b c d
[root@localhost a]# tree
.
├── a
│   ├── 1
│   ├── 2
│   ├── 3
│   └── 4
├── b
│   ├── 1
│   ├── 2
│   └── 3
├── c
│   ├── 1
│   └── 2
└── d
└── 1 14 directories, 0 files

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

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

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

[root@localhost a]# tree
.
├── a
│   ├── 1
│   │   ├── a.py
│   │   ├── b.py
│   │   └── c.py
│   ├── 2
│   ├── 3
│   └── 4
├── b
│   ├── 1
│   ├── 2
│   └── 3
├── c
│   ├── 1
│   └── 2
└── d
└── 1 14 directories, 3 files

  

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

cp 复制命令

cp(选项)(参数)

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

cp的一些选项

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

  

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

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

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

[root@localhost ~]# ls
a a.py
[root@localhost ~]# cp a.py a/
[root@localhost ~]# ls
a a.py
[root@localhost ~]# cd a
[root@localhost a]# ls
a.py

  

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

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

[root@localhost ~]# ls
a.py
[root@localhost ~]# cp a.py b.py
[root@localhost ~]# ls
a.py b.py

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

[root@localhost b]# tree /root
/root
├── a
│   └── a.py
└── b 2 directories, 1 file
[root@localhost b]# cp ../a/a.py .
[root@localhost b]# tree /root
/root
├── a
│   └── a.py
└── b
└── a.py 2 directories, 2 files

  

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

[root@localhost b]# pwd
/root/b
[root@localhost b]# tree /root
/root
├── a
│   ├── 1.py
│   ├── 2.py
│   └── 3.py
├── b
└── c 3 directories, 3 files
[root@localhost b]# cp -r ../a .
[root@localhost b]# tree /root
/root
├── a
│   ├── 1.py
│   ├── 2.py
│   └── 3.py
├── b
│   └── a
│   ├── 1.py
│   ├── 2.py
│   └── 3.py
└── c

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

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

[root@localhost b]# tree /root
/root
├── a
│   ├── a.py
│   └── b.py
├── b
│   └── a.py
└── c 3 directories, 3 files
[root@localhost b]# cp -i ../a/a.py .
cp: overwrite `./a.py'? y #y代表的是yes

  

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

cp aaa/* /bbb
复制目录aaa下所有到/bbb目录下,这时如果/bbb目录下有和aaa同名的文件,需要按Y来确认并且会略过aaa目录下的子目录。 cp -r aaa/* /bbb
这次依然需要按Y来确认操作,但是没有忽略子目录。 cp -r -a aaa/* /bbb
依然需要按Y来确认操作,并且把aaa目录以及子目录和文件属性也传递到了/bbb。 \cp -r -a aaa/* /bbb
成功,没有提示按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. Unity中List的随机排序(乱序)

    为什么要给List排序做一个Unity限定条件呢 首先,是C#中的List泛型,若是Java,直接调用Collection.shuffle()就OK了 而Unity的C#版本较低,不能使用Random ...

  2. Unity3D相机震动效果

    在一些格斗.射击以及动作类游戏中 相机震动效果是十分重要的 一个平凡的镜头 在关键时刻加入相机震动后 便可以展现出碰撞.危险.打斗以及激动人心的效果 相机震动的实现方式有很多 但都会涉及摄像机位置的变 ...

  3. Sql中根据旧表创建新表的SQL语句

    今天在网上查了下,根据旧表创建新表的SQL语句,网上给了两个答案 create table tab_new like tab_old (使用旧表创建新表) create table tab_new a ...

  4. 获取DOM节点的几种方式

    DOM 是一个树形结构,操作一个DOM节点,实际上就是这几个操作:更新.删除.添加.遍历 在操作DOM节点之前,需要通过各种方式先拿到这个DOM节点,常用的方法有: 一.通过元素类型的方法来操作: d ...

  5. Jdk1.7+eclipse搭建Java开发环境

    Jdk1.7+eclipse搭建Java开发环境 1.    下载jdk1.7 http://www.oracle.com/technetwork/java/javase/downloads/jdk7 ...

  6. 如何让shell脚本自杀

    有些时候我们写的shell脚本中有一些后台任务,当脚本的流程已经执行到结尾处并退出时,这些后台任务会直接挂靠在init/systemd进程下,而不会随着脚本退出而停止. 例如: [root@maria ...

  7. [poj2585]Window Pains_拓扑排序

    Window Pains poj-2585 题目大意:给出一个4*4的方格表,由9种数字组成.其中,每一种数字只会出现在特定的位置,后出现的数字会覆盖之前在当前方格表内出现的.询问当前给出的方格表是否 ...

  8. mode

    mode (jdoj-2905) 题目大意:给你一个n个数的数列,其中某个数出现了超过$\lfloor\frac{n}{2}\rfloor$即众数,请你找出那个数. 注释:n<=$5\cdot ...

  9. ThreadLocal 原理和使用场景分析

    ThreadLocal 不知道大家有没有用过,但至少听说过,今天主要记录一下 ThreadLocal 的原理和使用场景. 使用场景 直接定位到 ThreadLocal 的源码,可以看到源码注释中有很清 ...

  10. Leetcode 1——twosum

    Given an array of integers, return indices of the two numbers such that they add up to a specific ta ...