Linux操作文件与目录——cp、mv、mkdir、rm和ln命令

2023-05-16

1.通配符

表1 常用的通配符以及它们所选择的对象

通配符匹配项
*匹配任意多个字符(包括0个和1个)
匹配任意单个字符(不包括0个)
[characters]匹配任意一个属于字符集中的字符
[!characters]匹配任意一个不属于字符集中的字符
[[:class:]]匹配任意一个属于指定字符类中的字符

表2 最常见的字符类

字符类匹配项
[:alnum:]匹配任意一个字母或数字
[:alpha:]匹配任意一个字母
[:digit]匹配任意一个数字
[:lower:]匹配任意一个小写字母
[:upper:]匹配任意一个大写字母

表3 通配符示例

形式匹配项
*所有文件
g*以g开头的任一文件
b*.txt以b开头,中间有任意多个字符,并以.txt结尾的任一文件
Data???以Data开头,后面跟3个字符的任一文件
[abc]*以a,b,c任一一个开头的任一文件
BACKUP.[0-9][0-9][0-9]以BACKUP.开头,后面跟随3个数字的任一文件
[[:upper:]]*以大写字母开头的任一文件
[![:digit:]]*不以数字开头的任一文件
*[[:lower]123]以小写字母或数字1、2、3中任一结尾的任一文件

2. mkdir——创建目录

语法 mkdir directory …
可同时创建多个目录,例如
mkdir dir1 dir2 dir3

3.cp——复制文件和目录

语法
复制单个文件: cp item directory
复制多个文件: cp item… directory

表4 cp命令选项

选项含义
-a,–archive复制文件和目录及其属性包括所有权和权限。通常来说,复制文件具有用户所操作文件的默认属性
-i ,–interactive在覆盖一个已存在的文件前,提醒用户进行确认。如果没有指定该选项,cp会默认覆盖文件
-r, --recursive递归地复制目录及其内容。复制目录时需要该选项
-u,–update当将文件从一个目录复制到另外一个目录时,只会复制哪些目标目录中不存在的文件或是目标目录相应的更新文件
-v, --verbose复制文件时,显示信息性消息(informative message)

表5 cp命令示例

命令结果
cp file1 file2将file1复制到file2,如果file2存在,则会被file1的内容覆盖,如果file2不存在,则创建file2
cp -i file1 file2同上,区别在于file2存在时,覆盖之前会通知用户确认
cp file1 file2 dir1将file1和file2复制到目录dir1里,dir1必须已经存在
cp dir1/* dir2通过使用通配符,将dir1中的所有文件复制的dir2中,dir2必须已经存在
cp -r dir1 dir2将dir1目录(及其内容)复制到dir2目录中,如果dir2不存在,创建dir2,且包含与dir1目录相同的内容.

4. mv——移除和重命名文件

语法与cp类似
mv item1 item2,将文件(或目录)item1移动(或重命名)为item2
mv item… directory, 将一个或多个条目从一个目录移动到另一个目录下.

表6 mv命令选项

选项含义
-i ,–interactive在覆盖一个已存在的文件前,提醒用户进行确认。如果没有指定该选项,cp会默认覆盖文件
-u,–update当将文件从一个目录移动到另外一个目录时,只会移动哪些目标目录中不存在的文件或是目标目录相应的更新文件
-v, --verbose移动文件时,显示信息性消息(informative message)

表7 mv命令示例

命令结果
mv file1 file2将file1移动到file2,如果file2存在,则会被file1的内容覆盖,如果file2不存在,则创建file2,无论哪种情况,file1不再存在
mv -i file1 file2同上,区别在于file2存在时,覆盖之前会通知用户确认
mv file1 file2 dir1将file1和file2移动到目录dir1里,dir1必须已经存在
mv dir1 dir2将dir1(和其内容)移动到dir2中,如果dir2不存在,创建目录dir2,将dir1的内容移动到dir2下,同时删除目录dir1

5.rm——删除文件和目录

语法为 rm item…
表8 rm选项

选项含义
-i, --interative删除一个已存在的文件前,提示用户确认。如果没有指定这个选项,rm命令会默认删除文件
-r, --recursive递归地删除目录。要删除一个目录,则必须指定该选项
-f,–force忽略不存在的文件并无需提示确认,该选项会覆盖–interative选项
-v,–verbose删除文件时显示信息性消息

表9 rm实例
命令 | 结果
rm file1 | 在不提示用户的情况下,删除file1
rm -i file1 | 删除file1前,提示用户确认
rm -r file1 dir1 | 删除file1、dir1以及它们的内容
rm -rf file1 dir1 | 同上,当file1或dir1不存在时,rm仍会继续执行,且不提示用户

6. ln——创建链接

语法:
ln file link,用来创建硬链接
ln -s item link, 用来创建软链接

6.1 硬链接

当创建一个硬链接时,也为这个文件创建了一个额外的目录条目,硬链接有两条重要的局限性:

  • 硬链接不能引用自身文件系统之外的文件。也就是说,链接不能引用与该链接不在同一磁盘分区的文件。
  • 硬链接无法引用目录。
ln fun fun-hard
ln fun dir1/fun-hard
ln fun dir2/fun-hard
ls -li

可通过索引字节号,即第一个字段,来看到fun和fun-hard共享同一个索引节点号。

6.2 符号链接

符号链接克服了硬链接的各种局限,与windows系统下的快捷方式很像。

ln -s fun fun-sym
ln -s ../fun dir1/fun-sym
ln -s ../fun dir2/fun-sym
ls -l dir1

输出首字段第1个字段的首字符“l”来确认的.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux操作文件与目录——cp、mv、mkdir、rm和ln命令 的相关文章

  • 没有可用的符号表信息

    我正在测试第三方的库 它崩溃了 当我想查看崩溃的原因时 我的 gdb 告诉我没有可用的调试符号 Program received signal SIGSEGV Segmentation fault Switching to Thread 0
  • 如何更改 Ubuntu 14.04 上的 php-cli 版本?

    我是 Linux 新手 在篡改时破坏了一些 php 设置 如果我执行一个包含以下内容的 php 脚本 phpinfo 它显示 php 版本为 5 6 但通过命令行 如果我运行php v它返回 7 0 版本 我想让两个版本匹配 我怎样才能修复
  • 嵌入式Linux poll()不断返回

    我有一个特别的问题 当我知道没有什么可读时 民意调查不断返回 因此设置如下 我有 2 个文件描述符 它们构成fd设置民意调查监视 一种用于引脚从高到低的变化 GPIO 另一个用于代理输入 代理输入出现问题 处理的顺序是 启动main函数 然
  • 使用 find - 删除除任何一个之外的所有文件/目录(在 Linux 中)

    如果我们想删除我们使用的所有文件和目录 rm rf 但是 如果我希望一次性删除除一个特定文件之外的所有文件和目录怎么办 有什么命令可以做到这一点吗 rm rf 可以轻松地一次性删除 甚至可以删除我最喜欢的文件 目录 提前致谢 find ht
  • 在 Linux 上更快地分叉大型进程?

    在现代 Linux 上达到与 Linux 相同效果的最快 最好的方法是什么 fork execve combo 从一个大的过程 我的问题是进程分叉大约 500MByte 大 并且一个简单的基准测试只能从进程中实现约 50 个分叉 秒 比较最
  • Bash 解析和 shell 扩展

    我对 bash 解析输入和执行扩展的方式感到困惑 对于输入来说 hello world 作为 bash 中的参数传递给显示其输入内容的脚本 我不太确定 Bash 如何解析它 Example var hello world displaywh
  • 无法加载 JavaHL 库。- linux/eclipse

    在尝试安装 Subversion 插件时 当 Eclipse 启动时出现此错误 Failed to load JavaHL Library These are the errors that were encountered no libs
  • 抑制 makefile 中命令调用的回显?

    我为一个作业编写了一个程序 该程序应该将其输出打印到标准输出 分配规范需要创建一个 Makefile 当调用它时make run gt outputFile应该运行该程序并将输出写入一个文件 该文件的 SHA1 指纹与规范中给出的指纹相同
  • GLIBCXX_3.4.26 未找到在 BeagleBone 上运行交叉编译的程序

    我有以下程序 include
  • 仅打印“docker-container ls -la”输出中的“Names”列

    发出时docker container ls la命令 输出如下所示 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a67f0c2b1769 busybox tail f dev
  • Jenkins中找不到环境变量

    我想在詹金斯中设置很多变量 我试过把它们放进去 bashrc bash profile and profile of the jenkins用户 但 Jenkins 在构建发生时找不到它们 唯一有效的方法是将所有环境变量放入Jenkinsf
  • gdb查找行号的内存地址

    假设我已将 gdb 附加到一个进程 并且在其内存布局中有一个文件和行号 我想要其内存地址 如何获取文件x中第n行的内存地址 这是在 Linux x86 上 gdb info line test c 56 Line 56 of test c
  • Linux中的定时器类

    我需要一个计时器来以相对较低的分辨率执行回调 在 Linux 中实现此类 C 计时器类的最佳方法是什么 有我可以使用的库吗 如果您在框架 Glib Qt Wx 内编写 那么您已经拥有一个具有定时回调功能的事件循环 我认为情况并非如此 如果您
  • chown:不允许操作

    我有问题 我需要通过 php 脚本为系统中的不同用户设置文件所有者权限 所以我通过以下命令执行此操作 其中 1002 是系统的用户 ID file put contents filename content system chown 100
  • 在哪里可以找到并安装 pygame 的依赖项?

    我对 Linux 比较陌生 正在尝试安装 python 的 pygame 开发环境 当我运行 setup py 时 它说我需要安装以下依赖项 我找到并安装了其中之一 SDL 然而 其他人则更加难以捉摸 Hunting dependencie
  • 如何在数组中存储包含双引号的命令参数?

    我有一个 Bash 脚本 它生成 存储和修改数组中的值 这些值稍后用作命令的参数 对于 MCVE 我想到了任意命令bash c echo 0 0 echo 1 1 这解释了我的问题 我将用两个参数调用我的命令 option1 without
  • nslookup 报告“无法解析 '(null)': 名称无法解析”,尽管它成功解析了 DNS 名称

    我在 ubuntu 上 并且正在运行 docker 默认桥接网络 我有 Zookeeper kafka 的容器化版本 以及我编写的与 kafka 对话的应用程序 I do a docker exec it
  • arm64和armhf有什么区别?

    Raspberry Pi Type 3 具有 64 位 CPU 但其架构不是arm64 but armhf 有什么区别arm64 and armhf armhf代表 arm hard float 是给定的名称Debian 端口 https
  • 尝试安装 LESS 时出现“请尝试以 root/管理员身份再次运行此命令”错误

    我正在尝试在我的计算机上安装 LESS 并且已经安装了节点 但是 当我输入 node install g less 时 出现以下错误 并且不知道该怎么办 FPaulMAC bin paul npm install g less npm ER
  • 无法使用 wget 在 CentOS 机器上安装 oracle jdk

    我想在CentOS上安装oracle java jdk 8 我无法安装 java jdk 因为当我尝试使用命令安装 java jdk 时 root ADARSH PROD1 wget no cookies no check certific

随机推荐

  • 设备管理信息系统

    设备管理系统 设备管理系统 xff08 Equipment Management System xff09 是将信息化了设备技术信息与现代化管理相结合 xff0c 是实现研究级管理信息化的先导 设备管理软件是设备管理模式与计算机技术结合的产
  • Pytorch源码学习之七:torchvision.models.googlenet

    0 基本知识 torchvision models googlenet源码地址 GoogLeNet论文地址 Inception模块 注意 xff0c 代码中第三个模块采取的3x3卷积而非5x5卷积 xff0c 不知为何 GoogLeNet网
  • TensorRT学习常用网址汇总(持续更新)

    一 官方网址 网址名称简介tensorrt support matrixTensorRT支持的硬件和应用详情 TensorRT中文教程中文教程 xff0c 部分翻译TensorRT官方中文文档官方中文文档 xff0c 注意版本号NVIDIA
  • JetsonTX2 之刷机 ——Jetpack 4.3

    2020年再次使用Nvidia Jetson tx2 xff0c Jetpack已经发行了4 4 xff0c TX2默认的系统也升级到了ubuntu 18 04 xff0c 刷机方式也发生了变化 这里记录我的刷机过程 xff0c 亲测有效
  • TX2(ubuntu 18.04)更换清华镜像源

    注意 xff0c 该版本的TX2有两个特点 xff1a Arm架构和ubuntu18 04 一 备份 sudo cp etc apt sources list etc apt sources list bak 先备份原文件sources l
  • ubuntu更换镜像源——全面讲解

    1 更换镜像源方法 我们都知道 xff0c 以清华源为例 xff0c ubuntu更换镜像分为以下几个步骤 xff1a Step1 备份原来的源 Step2 更换清华源 Step3 更新 例如 TX2 ubuntu 18 04 更换清华镜像
  • Jetson TX2刷机后查看CUDA和CUDNN版本——以JetPack4.3为例

    一 查看CUDA版本 nvcc V 输出为 xff1a 即CUDA版本为10 0 二 查看CUDNN版本 cat usr include cudnn h grep CUDNN MAJOR A 2 输出为 xff1a 即版本为7 6 3
  • TX2查看cpu/gpu使用情况方法大全

    一 方法1 tegrastats Jetpack4 3比起之前的3 x版本 xff0c tegrastats文件发生了变化 sudo cp usr bin tegrastats tegrastats sudo tegrastats 二 方法
  • Jetson TX2上升级cmake方法

    我的应用场景要编译TensorRT的sampleuffMaskRCNN xff0c 需要最低cmake版本为3 13 而Jetpack 4 3刷机后自带的为3 12 使用以下两条命令都是失败的 sudo pip3 install cmake
  • Linux之make知识点

    0 GNU Operating System 1 Linux之make的用法讲解
  • TX2 安装cv2需要的依赖——JetPack4.3

    JetPack 4 3自带了opencv 4 1 1 而当使用python3导入cv2时 xff0c 发现仍缺少依赖 xff0c 首先使用清华镜像源因此使用以下代码进行安装 xff1a sudo apt get update sudo ap
  • ipconfig命令详细图解

    一 操作实例 不带参数 xff1b all参数 xff1b release和 renew displaydns参数就是显示本地DNS内容 xff1b 相当多 xff1b 看下 xff0c 上了会网 xff0c 缓存的DNS很多 xff1b
  • 《自己动手写Docker》书摘之二---Linux Cgroups介绍

    Linux Cgroups介绍 上面是构建Linux容器的namespace技术 xff0c 它帮进程隔离出自己单独的空间 xff0c 但Docker又是怎么限制每个空间的大小 xff0c 保证他们不会互相争抢呢 xff1f 那么就要用到L
  • TX2安装tensorflow-gpu(亲测有效)

    安装好JetPack 4 3之后 xff0c 再也不需要从源码对tensorflow进行编译安装 xff0c 可以通过以下两步安装 xff1a Step1 安装h5py sudo apt get install python3 h5py 主
  • TX2编译TensorRT的C++ samples ——Jetpack4.3

    不得不说 xff0c JetPack 4 3实在是太方便了 xff01 1 Where is TensorRT 1 1 C 43 43 版本 与手动安装tensorRT不同 xff0c JetPack自动将TensorRT c 43 43
  • TX2编译安装curl,使其可以解析https

    不小心误删了刷机后自带的Curl 导致安装的curl不能解析https curl安装 以下方式可行 xff1a sudo apt purge curl git clone https github com curl curl git cd
  • 从网站上下载数据集并解压——以coco数据集为例

    最近在阅读源码时发现了一段值得学习的源码 xff0c 实现从网址下载coco数据集到本地 xff0c 并解压 xff0c 在这里做下记录 xff0c 以备借鉴使用 span class token comment 以下载annotation
  • Linux系统ls命令详解

    1 ls命令 选项长选项含义 a all列出所有文件 xff0c 包括以点号开头的文件 xff0c 这些文件通常是不列出来的 xff08 比如隐藏的文件 xff09 d directory如果指定了一个目录 xff0c ls会列出目录中内容
  • Linux系统中目录的内容详解---bin、dev、etc、home、lib、opt、usr、var

    目录内容 根目录 xff0c 一切从这里开始 bin包含系统启动和运行所必须的二进制文件 程序 boot包含Linux内核 最初的RAM磁盘映像 xff0c 以及启动加载程序 常用的文件 boot grub grub conf或menu l
  • Linux操作文件与目录——cp、mv、mkdir、rm和ln命令

    1 通配符 表1 常用的通配符以及它们所选择的对象 通配符匹配项 匹配任意多个字符 包括0个和1个 xff1f 匹配任意单个字符 不包括0个 characters 匹配任意一个属于字符集中的字符 characters 匹配任意一个不属于字符