文件及目录操作 - cp、find

1、cp:复制文件或目录

cp命令的功能说明

cp命令用于复制文件或目录。

cp命令的语法格式

cp [OPTION]... SOURCE... DIRECTORY
cp [参数选项] [源文件或源目录] [目标文件或目录]

cp命令的选项说明

cp 选项就几个,表1为 cp命令的参数及说明:

表1: cp命令的参数及说明

参数选项 解释说明(带*的为重点)
-r 复制目录 *
-p 保持文件或目录属性
-a 相当于同时使用参数-d,-p,-r *
-i 提示是否覆盖的确认
-d 如果复制的源文件为链接文件,仅复制符号链接本身,且保留符号链接所指向的目标文件或目录

cp命令的实践操作

范例1: 无参数和带参数-a的比较

[root@oldboyedu  /test]# pwd
/test
[root@oldboyedu  /test]# ll -h
total 0
drwxr-xr-x 3 root root 18 Apr  5 18:52 dir1
drwxr-xr-x 2 root root  6 Apr  4 14:51 dir2
drwxr-xr-x 2 root root  6 Apr  4 14:51 dir3
-rw-r--r-- 1 root root  0 Apr  6 08:26 file1.txt
-rw-r--r-- 1 root root  0 Apr  4 14:51 file2.txt
-rw-r--r-- 1 root root  0 Apr  4 14:51 file3.txt
[root@oldboyedu  /test]# cp file1.txt file4.txt
[root@oldboyedu  /test]# cp -a file1.txt file5.txt
[root@oldboyedu  /test]# ll -h
total 0
drwxr-xr-x 3 root root 18 Apr  5 18:52 dir1
drwxr-xr-x 2 root root  6 Apr  4 14:51 dir2
drwxr-xr-x 2 root root  6 Apr  4 14:51 dir3
-rw-r--r-- 1 root root  0 Apr  6 08:26 file1.txt       <-->源文件的属性
-rw-r--r-- 1 root root  0 Apr  4 14:51 file2.txt
-rw-r--r-- 1 root root  0 Apr  4 14:51 file3.txt
-rw-r--r-- 1 root root  0 Apr  6 08:27 file4.txt       <-->没加参数的文件属性
-rw-r--r-- 1 root root  0 Apr  6 08:26 file5.txt       <-->加了参数的文件属性

范例2: 使用-i参数的例子

[root@oldboyedu  /test]# cp -i file1.txt file5.txt       <-->提示是否覆盖文件?
cp: overwrite ‘file5.txt’? n
[root@oldboyedu  /test]# cp file1.txt file5.txt           <-->没加 -i 为啥也提示?
cp: overwrite ‘file5.txt’? n
[root@oldboyedu  /test]# alias cp                             <-->因为系统为cp做了别名
alias cp='cp -i'
[root@oldboyedu  /test]# \cp file1.txt file5.txt          <-->取消别名(或提示)方法1:在前面加\
[root@oldboyedu  /test]# /bin/cp file1.txt file5.txt   <-->取消别名(或提示)方法2:使用命令的绝对路径

范例3: 使用-r参数复制目录

[root@oldboyedu  /test]# tree dir1 dir2         <-->看一下dir1和dir2目录内容
dir1                                                                    <--> dir1目录的内容
└── sub1
    └── test
dir2                                                                    <--> dir2目录的内容   

2 directories, 0 files
[root@oldboyedu  /test]# cp dir1 dir2           <-->显示跳过目录dir1
cp: omitting directory ‘dir1’
[root@oldboyedu  /test]# cp -r dir1 dir2        <--> 使用 -r 参数
[root@oldboyedu  /test]# tree dir1 dir2         <-->查看结果
dir1                                                                    <--> dir1目录的内容
└── sub1
    └── test
dir2                                                                    <--> dir2目录的内容(连目录dir1本身也复制过来了)
└── dir1
    └── sub1
        └── test

5 directories, 0 files

范例4: 快速备份文件案例

[root@oldboyedu  /test]# cp /etc/ssh/ssh_config /etc/ssh/sshd_config.ori    <-->正常备份
[root@oldboyedu  /test]# cp /etc/ssh/ssh_config{,.ori}                                    <-->快速备份

2、find:查找目录下的文件或查找目录

find命令的功能说明

find命令用于查找目录下的文件或查找目录,同时可以调用其他命令执行相应的操作。

find命令的语法格式

find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]
find [选项] [路径] [操作语句]

find命令的选项说明

find 选项很多,表1为 find 命令的常用的参数及说明:

表1: find 命令的参数及说明(还有很多参数,不再列举)

参数选项 解释说明
-name 按文件名查询
-type f查找文件;d查找目录
-exec 对查找的结果再处理
-mtime -n查找更改时间距现在n(正整数)天以内;+n查找更改时间距现在n(正整数)天以前;n查找更改时间距现在n(正整数)
-perm 按照文件的权限来查找文件
-size 以文件大小查找
-path 指定路径样式,配合-prune参数排除指定目录
! 表示取反
-a 表示取交集
-o 取并集

find命令的实践操作

范例1: 查找指定时间内修改过的文件

[root@oldboyedu  /test]# find . -atime -1                   <--> . 表示当前,查找2天内被访问的文件
.
./file1.txt
./dir1
./dir1/sub1
./dir1/sub1/test
./file4.txt
./file5.txt
./dir2
./dir2/dir1
./dir2/dir1/sub1
./dir2/dir1/sub1/test
[root@oldboyedu  /test]# find /test/ -mtime -5          <-->使用绝对路径,查找5天内被修改的文件
/test/
/test/file1.txt
/test/file2.txt
/test/file3.txt
/test/dir1
/test/dir1/sub1
/test/dir1/sub1/test
/test/dir3
/test/.file4.txt
/test/file4.txt
/test/file5.txt
/test/dir2
/test/dir2/dir1
/test/dir2/dir1/sub1
/test/dir2/dir1/sub1/test

范例2:-name指定关键字查找

[root@oldboyedu  /test]# find /var/log/ -mtime +5 -name '*.log'    <-->在/var/log/目录下查找5天以前.log结尾的文件
/var/log/anaconda/anaconda.log
/var/log/anaconda/X.log
/var/log/anaconda/program.log
/var/log/anaconda/packaging.log
/var/log/anaconda/storage.log
/var/log/anaconda/ifcfg.log
/var/log/anaconda/ks-script-klS0RP.log
/var/log/anaconda/journal.log
/var/log/vmware-network.8.log
/var/log/vmware-network.9.log

范例3: 利用 ! 反向查找

[root@oldboyedu  /test]# find . -type d
.
./dir1
./dir1/sub1
./dir1/sub1/test
./dir3
./dir2
./dir2/dir1
./dir2/dir1/sub1
./dir2/dir1/sub1/test
[root@oldboyedu  /test]# find . ! -type d   <-->! 表示取反,查找不是目录的文件,注意感叹号的位置
./file1.txt
./file2.txt
./file3.txt
./.file4.txt
./file4.txt
./file5.txt

范例4: 按照目录或文件的权限来查找文件

[root@oldboyedu  /test]# find /test -perm 755      <-->755是权限的数字表示方式
/test
/test/dir1
/test/dir1/sub1
/test/dir1/sub1/test
/test/dir3
/test/dir2
/test/dir2/dir1
/test/dir2/dir1/sub1
/test/dir2/dir1/sub1/test

范例5: 按大小查找文件

[root@oldboyedu  /test]# find . -size +10c       <-->查找当前目录下大于10字节的文件
.
./dir1
./dir1/sub1
./dir2
./dir2/dir1
./dir2/dir1/sub1

范例6: 查找文件时希望忽略某个目录

[root@oldboyedu  /test]# find /test -path "/test/dir1" -prune -o -print  <-->排除指定目录
/test
/test/file1.txt
/test/file2.txt
/test/file3.txt
/test/dir3
/test/.file4.txt
/test/file4.txt
/test/file5.txt
/test/dir2
/test/dir2/dir1
/test/dir2/dir1/sub1
/test/dir2/dir1/sub1/test

范例6: 忽略多个目录(了解即可)

[root@oldboyedu  /test]# find /test \( -path /test/dir2 -o -path /test/dir3 \) -prune -o -print   <-->注意括号的空格
/test
/test/file1.txt
/test/file2.txt
/test/file3.txt
/test/dir1
/test/dir1/sub1
/test/dir1/sub1/test
/test/.file4.txt
/test/file4.txt
/test/file5.txt

范例7: ls -l 命令放在 find命令的 -exec选项中执行

[root@oldboyedu  /test]# find . -type f -exec ls -l {} \;      <-->最后以分号作为结束标志,考虑不同意义,所以要转义加\
-rw-r--r-- 1 root root 0 Apr  6 08:26 ./file1.txt
-rw-r--r-- 1 root root 0 Apr  4 14:51 ./file2.txt
-rw-r--r-- 1 root root 0 Apr  4 14:51 ./file3.txt
-rw-r--r-- 1 root root 0 Apr  4 15:01 ./.file4.txt
-rw-r--r-- 1 root root 0 Apr  6 08:27 ./file4.txt
-rw-r--r-- 1 root root 0 Apr  6 08:39 ./file5.txt

范例8: ls -l 命令放在 find命令的 xargs选项中执行

[root@oldboyedu  /test]# find . -type f |xargs ls -l   <-->xargs是一个命令,后续会讲
-rw-r--r-- 1 root root 0 Apr  6 08:26 ./file1.txt
-rw-r--r-- 1 root root 0 Apr  4 14:51 ./file2.txt
-rw-r--r-- 1 root root 0 Apr  4 14:51 ./file3.txt
-rw-r--r-- 1 root root 0 Apr  4 15:01 ./.file4.txt
-rw-r--r-- 1 root root 0 Apr  6 08:27 ./file4.txt
-rw-r--r-- 1 root root 0 Apr  6 08:39 ./file5.txt

范例9: 使用 xargs执行 mv(移动文件或目录)命令例子

[root@oldboyedu  /test]# ls
dir1  dir2  dir3  file1.txt  file2.txt  file3.txt  file4.txt  file5.txt
[root@oldboyedu  /test]# ls dir3
[root@oldboyedu  /test]# find . -name "*.txt"|xargs -i mv {} dir3/      <-->使用 -i 参数使得 { } 代表find查找到的文件
[root@oldboyedu  /test]# ls
dir1  dir2  dir3
[root@oldboyedu  /test]# ls dir3
file1.txt  file2.txt  file3.txt  file4.txt  file5.txt

今天就写到这里,有什么疑问或出现什么错误,随时欢迎大神们发表评论指点迷津

Shell命令-文件及目录操作之cp、find的更多相关文章

  1. Shell命令-文件及目录操作之chattr、lsattr

    文件及目录操作 - chattr.lsattr 1. chattr:改变文件属性 chattr命令的功能说明 chattr命令用于改变文件属性.这项指令可改变存放在ext2文件系统上的文件或目录属性, ...

  2. Shell命令-文件及目录操作之file、md5sum

    文件及目录操作 - file.md5sum 1. file:显示文件的类型 file命令的功能说明 用于辨识文件类型.通过 file 指令,我们得以辨识该文件的类型. file命令的语法格式 file ...

  3. Shell命令-文件及目录操作之ls、cd

    文件及目录操作 - ls.cd 1.ls:列出目录的内容及其内容属性信息 ls命令的功能说明 ls命令用于列出目录的内容及其内容属性信息. ls命令的语法格式 ls [OPTION]... [FILE ...

  4. Shell命令-文件及目录操作之mkdir、mv

    文件及目录操作 - mkdir.mv 1.mkdir:创建目录 mkdir命令的功能说明 mkdir命令用于创建目录,默认情况下,要创建的目录已存在,会提示文件存在,不会继续创建目录. mkdir命令 ...

  5. Shell命令-文件及目录操作之pwd、rm

    文件及目录操作 - pwd.rm 1.pwd:显示当前所在位置信息 pwd命令的功能说明 pwd命令用于显示当前工作目录的绝对路径,以便在各个目录间来回切换. pwd命令的语法格式 pwd [OPTI ...

  6. Shell命令-文件及目录操作之touch、tree

    文件及目录操作 - touch.tree 1.touch:创建文件或更改文件时间戳 touch命令的功能说明 touch命令用于创建新的空文件或改变已有文件的时间戳属性. touch命令的语法格式 t ...

  7. shell 命令 文件查看ls,复制cp,移动mv,查看文件内容cat more less,查看文件信息 file

    1. 查看文件 ls        ls -l  查看文件详细信息 ls -a 查看所有文件(包含隐藏文件) ls -lh  带单位显示文件大小 ls -i  查看文件的节点号(相当身份证唯一)  2 ...

  8. Linux操作系统常用命令合集——第一篇-文件和目录操作(40个命令)

    一.选项和参数的区别        在经过上一次的系统安装后我们已经成功登陆,登陆LInux后,我们就可以在#或$符后面去输入命令,有的时候命令后面还会跟着“选项”(英文名:options)或“参数” ...

  9. Python中的文件和目录操作实现

    Python中的文件和目录操作实现 对于文件和目录的处理,虽然可以通过操作系统命令来完成,但是Python语言为了便于开发人员以编程的方式处理相关工作,提供了许多处理文件和目录的内置函数.重要的是,这 ...

随机推荐

  1. python学习笔记(六)、类

    Python与java.c++等都被视为一种面向对象的语言.通过创建自定义类,用于处理各种业务逻辑.面向对象有封装.继承.多态三个特征,这也是面子对象语言的通用特征. 1 封装 封装,是值向外部隐藏内 ...

  2. 3 Redis 的常用五大数据类型

    2016-12-21 14:54:20 该系列文章链接NoSQL 数据库简介Redis的安装及及一些杂项基础知识Redis 的常用五大数据类型(key,string,hash,list,set,zse ...

  3. 从.Net到Java学习第十二篇——SpringBoot+JPA提供跨域接口

    从.Net到Java学习系列目录 最近又撸了半个月的前端代码,做app离线存储,然后又花了一周去将过去的wcf项目转webapi,java又被落下了,总感觉我特么像斗地主中的癞子牌,变来变去..... ...

  4. python 生成图形验证码

    文章链接:https://mp.weixin.qq.com/s/LYUBRNallHcjnhJb1R3ZBg 日常在网站使用过程中经常遇到图形验证,今天准备自己做个图形验证码,这算是个简单的功能,也适 ...

  5. Redis订阅与发布

    发布与订阅模型在许多编程语言中都有实现,也就是我们经常说的设计模式中的一种--观察者模式.在一些应用场合,例如发送方并不是以固定频率发送消息,如果接收方频繁去咨询发送方,这种操作无疑是很麻烦并且不友好 ...

  6. django源码分析 请求流程

    一.从浏览器发出一个请求,到返回响应内容,这个过程是怎么样的? 1. 浏览器解析输入的url 2. 查找url对应的ip地址 3. 通过ip地址访问我们的服务器 1.  请求进入wsgi服务器(我在这 ...

  7. 前后端分离djangorestframework—— 接入第三方的验证码平台

    关于验证码部分,在我这篇文章里说的挺详细的了:Python高级应用(3)—— 为你的项目添加验证码 这里还是再给一个前后端分离的实例,因为极验官网给的是用session作为验证的,而我们做前后端分离的 ...

  8. Lcd(一)显示原理

    一.LCD控制原理 S5PV210处理器中自带LCD控制器,控制LCD的显示,把 LCD 图像数据从一个位于系统内存的 video buffer 传送到一个外部的 LCD 驱动器接口. 类型: STN ...

  9. const关键字到底该怎么用

    原文地址:https://www.yanbinghu.com/2019/01/28/7442.html 前言 我们都知道使用const关键字限定一个变量为只读,但它是真正意义上的只读吗?实际中又该如何 ...

  10. KAPTCHA验证码使用步骤

    使用kaptcha可以方便的配置: · 验证码的字体 · 验证码字体的大小 · 验证码字体的字体颜色 · 验证码内容的范围(数字,字母,中文汉字!) · 验证码图片的大小,边框,边框粗细,边框颜色 · ...