当前位置: 首页 > news >正文

【Linux】learning notes(3)make、copy、move、remove

在这里插入图片描述

文章目录

  • 1、mkdir (make directory)
  • 2、rmdir (remove directory)
  • 3、rm(remove)
  • 4、>
  • 5、touch 新建文件
  • 6、mv(move)
  • 7、cp(copy)

1、mkdir (make directory)

mkdir (make directory) 就是创建一个文件夹的意思, 使用起来很简单.

  • mkdir folder(不带/也可以),夹中夹 mkdir folder/f
  • mkdir f1 f2 f3 新建多个文件夹

在这里插入图片描述

mkdir -m 777 -v -p /home/bryant/1/2/3/

显示

mkdir: create directory '/home/bryant/1'
mkdir: create directory '/home/bryant/1/2'
mkdir: create directory '/home/bryant/12/3/'

创建多个文件夹

mkdir {dirA,dirB} 

2、rmdir (remove directory)

有一个前提条件. 这些要移除的文件夹必须是空的. 不然会失败.
rmdir folder

3、rm(remove)

在这里插入图片描述

rm 命令在 Linux 和 Unix 系统中用于删除文件或目录。它是 “remove” 的缩写。使用 rm 命令时需要格外小心,因为一旦删除文件或目录,除非有备份,否则通常无法恢复。

  • -f, --force:强制删除文件或目录,忽略不存在的文件,不提示确认。这个选项在脚本中特别有用,因为它可以避免因文件不存在而导致的错误中断。
  • -i, --interactive:交互式删除文件,在删除每个文件之前提示用户确认。这个选项有助于防止意外删除重要文件。
  • -r, -R, --recursive:递归地删除目录及其内容,即删除目录及其包含的所有文件和子目录。这个选项是删除目录所必需的。
  • -v, --verbose:详细模式,显示被删除的每个文件的名称。这个选项在删除大量文件时很有用,因为它可以提供进度反馈。
  • –one-file-system:在递归删除时,rm 默认会跨越文件系统边界(比如,从一个挂载的目录删除到另一个挂载的目录)。这个选项会阻止这种跨文件系统的删除。
  • –no-preserve-root:默认情况下,rm 命令不会删除根目录(/)。这个选项允许删除根目录及其内容,这是一个非常危险的操作,需要极高的权限(通常是 root 权限),并且强烈不建议使用。
  • -d, --dir:删除空目录。当需要删除空目录而不想递归删除其下的内容时,这个选项很有用。注意,这不同于 -r,-r 可以删除非空目录。
  • –preserve-root:这个选项实际上并不是 rm 命令的直接选项,但提到它是因为它用于防止意外删除根目录。一些系统可能默认设置了 rm 的别名来包含 --preserve-root 选项,以确保即使是以 root 用户身份运行,也不能删除根目录。

那文件夹里面有文件的这种情况, 或者是移除单个文件的情况, 我们都能用 rm 来实现.

  • rm file1 移除单个文件
  • rm -i 有提示地移除文件 (为了避免误删),每个要移除的文件都进行提示
  • rm -I 有提示地移除文件 (为了避免误删),超过3个文件才进行提示
  • rm -r folder 或者 rm -R folder 可以在文件夹中有文件的情况下删除这个文件夹
  • rm -rf xxx 递归强制删除
  • rm -rf -v xxx Remove with Verbose Information,删除带有子目录的目录会提供详细信息
  • rm -r -i xxx 删除确认,yes or no

经常在删除文件时会碰到 Device or Resource is busy 的情况,这个时候尝试用下面的方法:

  • 使用 ps 和 kill 命令查看并删除相应的进程,时候再执行rm删除操作

  • 使用lsof命令查看使用该文件并用kill删除,再执行rm操作

  • 使用fuser -kvm /mnt/test命令,再执行rm操作

    • k参数: 缩写kill
    • v参数: 详细输出
    • m参数: 表面指定的路径为挂载点

除了 rm,还可以用 find

  • 使用find命令结合-exec命令来删除
find /tmp -type f -exec rm -rf {} \;
  • 使用find命令结合xargs命令来删除
find /tmp -type f | xargs rm -rf

文件太多的话(rsync命令快速删除大目录)

#先创建一个空目录
mkdir /usr/local/newdata/#执行删除,原理是用新的空目录替换要删掉的目录(/usr/local/olddata/为要删掉的目录)
rsync --delete-before -d /usr/local/newdata/ /usr/local/olddata/#执行完删除操作后,新建目录和要删掉的目录都变成空的了,可以把刚才新建的目录也删掉
rm -rf /usr/local/newdata/

使用 rsync 命令就会发现,删掉几十 G 的目录瞬间就可以搞定了。

rsync --delete-before -avH --progress --stats /tmp/ /2b_del_dir/

参数说明

-d --dirs :以不递归的方式拷贝目录本身。默认递归时,如果源为"dir1/file1",则不会拷贝dir1目录,使用该选项将拷贝dir1但不拷贝file1。-a:        归档模式-v:        显示全部过程-H:        保持硬链接文件-progress    在传输时显示传输过程

4、>

在 Linux 上使用重定向符(>)创建一个文件

> bryant.txt

5、touch 新建文件

touch 能够新建文件,mkdir 用来新建文件夹

  • touch file1 建立一个文件
  • touch file1 file2 file3建立多个文件

touch 命令常用于将每个文件的访问和修改时间更新为当前时间

如果指定的文件名不存在,将会创建一个新的文件。

touch 不允许我们在创建文件的同时向其中输入一些文本。它默认创建一个 0KB 的空文件。

下面的描述是错误的

在这里插入图片描述

灵活应用

touch 现有的.cpp # 刷新文件时间

可编译

6、mv(move)

1)移动去另一个文件夹

mv source destination

-f :force 强制癿意忠,如果目标档案已经存在,不会询问而直接覆盖;
-i :若 destination 已经存在时,就会询问是否覆盖!
-u :若目标档案已经存在, source 比较新,才会 update
-n:不覆盖已存在的文件

2)重命名文件

因为移动文件到原始的地点, 但是以不同的文件名. 这种做法不就是在重命名嘛!
mv file1 file1rename


补充,有时候转移的文件较多时,会出现 Argument list too long,使用 cp 复制命令时也同样会出现该警示

其中一种解决方法是配合 * 来转移文件名中有共性的文件,

例如 mv 1*.jpg 来移动文件名以 1 开头的图片

另外一种方法是配合 find 来转移

find sourcePath/ -name "*.txt"  -exec mv {} targetPath/  \;
#or
find sourcePath/ -type f  -exec mv {} targetPath/  \;

注意:结束符 \; 不能省,不过该方法速度偏慢

参考:linux: Argument list too long

7、cp(copy)

在 Linux 系统中,cp 命令是用于复制文件或目录的常用命令。它提供了多个参数来支持不同的复制需求和行为。

覆盖文件,加上 \ 就不会提示 yes or no,cp 等同于 cp -i

\cp 源文件 目标文件

cp 源文件1 源文件2 源文件3 ... 目标目录,复制多个文件

常用参数

  • -a, --archive
    归档模式复制,保留文件的所有属性,包括链接、文件属性,并递归地复制目录。这相当于-dR --preserve=all的组合。
  • -r, --recursive
    递归复制目录及其中的所有文件和子目录。如果源文件是一个目录,则使用该参数可以复制整个目录树。
  • -p, --preserve
    保留文件的属性,如权限、所有者、时间戳等。这是复制文件时保持文件特性的常用选项。
  • -u, --update
    仅复制源文件比目标文件新或目标文件不存在的文件。这有助于更新目标目录中的文件,而不覆盖较新的文件。
  • -l, --link
    创建硬链接而不是复制文件。硬链接指向文件系统中的相同数据块,因此删除其中一个链接不会影响其他链接。注意,硬链接只能在同一文件系统中创建。
  • -s, --symbolic-link
    创建符号链接(软链接)而不是复制文件。符号链接是一个特殊的文件,它包含对另一个文件或目录的引用。
  • -i, --interactive
    在覆盖目标文件之前提示用户确认。这有助于防止意外覆盖重要文件。
  • -v, --verbose
    显示详细的复制过程信息,包括复制的文件名和目录。这有助于了解复制操作的具体细节。
  • -f, --force
    强制复制文件,即使目标文件已经存在且无法覆盖。这通常用于脚本中,以避免因文件已存在而导致的错误。
  • -b, --backup
    在覆盖目标文件之前,先创建目标文件的备份。这有助于保留文件的旧版本,以防需要恢复。
  • –parents
    复制文件时保留文件的目录结构,即在目标目录下创建源文件的相对路径。这有助于保持文件原有的组织结构。

注意事项

  • 在使用 cp 命令时,请确保目标文件或目录具有足够的权限,以便能够成功复制文件。
  • cp 命令可以复制链接文件,但不会复制链接指向的实际文件或目录。
  • 如果目标目录不存在,使用 -r 参数复制目录时,会自动创建目标目录。
  • 通过合理使用这些参数,可以根据不同的需求进行灵活的文件和目录复制操作。

eg:

  • cp 老文件 新文件
    如果新文件已存在,上面指令中老文件会直接覆盖新文件,为了避免这种情况,用如下指令
  • cp -i 老文件 新文件
    这样,如果新文件已存在会提示你是否 overwrite新文件,回答 yesYESy 同意覆盖,回车或其他字母放弃覆盖
  • cp file1 folder1/ 文件复制去文件夹
  • cp -R folder1/ folder2/ 复制文件夹,加一个 -R(recursive),表示递归的将 folder1 中的所有文件复制到 folder2中
  • cp file* folder2/ 复制多个文件. 复制名字部分相同的多个文件, * 是说”你就找文件前面是 file 的文件, 后面是什么名字无所谓”。后缀相同也行 cp *4 folder2/
  • cp file1copy file2 folder1/ 复制多个文件,cp 会默认最后一个选项是要复制去的文件夹

相关文章:

【Linux】learning notes(3)make、copy、move、remove

文章目录 1、mkdir (make directory)2、rmdir (remove directory)3、rm(remove)4、>5、touch 新建文件6、mv(move)7、cp(copy) 1、mkdir (make…...

一、图像图像的基本概念

文章目录 一、分辨率概念二、图形图像的区别三、位图和矢量图的区别 一、分辨率概念 图形显示计数中的分辨率概念有三种,即屏幕分辨率、显示分辨率和显卡分辨率。它们既有区别又有着密切的联系,对图形显示的处理有极大的影响。 1.屏幕分辨率 显示器分辨…...

两道算法练习

力扣322零钱兑换 给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。 计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。 你可以认为每种硬币的…...

利用 Python 爬虫进行跨境电商数据采集

1 引言2 代理IP的优势3 获取代理IP账号4 爬取实战案例---(某电商网站爬取)4.1 网站分析4.2 编写代码4.3 优化代码 5 总结 1 引言 在数字化时代,数据作为核心资源蕴含重要价值,网络爬虫成为企业洞察市场趋势、学术研究探索未知领域…...

设计模式--spring中用到的设计模式

一、单例模式(Singleton Pattern) 定义:确保一个类只有一个实例,并提供全局访问点 Spring中的应用:Spring默认将Bean配置为单例模式 案例: Component public class MySingletonBean {// Spring 默认将其…...

Qt控件中函数指针使用的最终版本,使用std::function

代码&#xff1a; class MyWidget : public QWidget { public:std::function<void(QResizeEvent* event)> pf_resizeEvent 0; protected:inline void resizeEvent(QResizeEvent* event) override {if (pf_resizeEvent ! 0)pf_resizeEvent(event);} };int main(int arg…...

Java中的泛型类 --为集合的学习做准备

学习目标 ● 掌握在集合中正确使用泛型 ● 了解泛型类、泛型接口、泛型方法 ● 了解泛型上下限 ● 了解基本的使用场景 1.有关泛型 1.1泛型的概念 泛型&#xff08;Generics&#xff09;是Java中引入的参数化类型机制&#xff0c;允许在定义类、接口或方法时使用类型参数&a…...

6.6.6 嵌入式SQL

文章目录 2个核心问题识别SQL语句主语言和SQL通信完整导图 2个核心问题 SQL语句嵌入高级语言需要解决的2个核心问题是&#xff1a;如何识别嵌入语句&#xff1f;如何让主语言&#xff08;比如C,C语言&#xff09;和SQL通信&#xff1f; 识别SQL语句 为了识别主语言中嵌入的SQL…...

基于C#的CANoe CLR Adapter开发指南

一、引言 CANoe 是一款广泛应用于汽车电子开发和测试的工具&#xff0c;它支持多种编程接口&#xff0c;方便开发者进行自定义扩展。CANoe CLR Adapter 允许我们使用 C# 语言与 CANoe 进行交互&#xff0c;充分利用 C# 的强大功能和丰富的类库。本文将详细介绍如何基于 C# 进行…...

【Qt】MVC设计模式

目录 一、搭建MVC框架 二、创建数据库连接单例类SingleDB 三、数据库业务操作类model设计 四、control层&#xff0c;关于model管理类设计 五、view层即为窗口UI类 一、搭建MVC框架 里面的bin、lib、database文件夹以及sqlite3.h与工程后缀为.pro文件的配置与上次发的文章…...

【手撕算法】支持向量机(SVM)从入门到实战:数学推导与核技巧揭秘

摘要 支持向量机&#xff08;SVM&#xff09;是机器学习中的经典算法&#xff01;本文将深入解析最大间隔分类原理&#xff0c;手撕对偶问题推导过程&#xff0c;并实战实现非线性分类与图像识别。文中附《统计学习公式手册》及SVM调参指南&#xff0c;助力你掌握这一核心算法…...

JAVA面试常见题_基础部分_Dubbo面试题(上)

Dubbo 支持哪些协议&#xff0c;每种协议的应用场景&#xff0c;优缺点&#xff1f; • dubbo&#xff1a; 单一长连接和 NIO 异步通讯&#xff0c;适合大并发小数据量的服务调用&#xff0c;以及消费者远大于提供者。传输协议 TCP&#xff0c;异步&#xff0c;Hessian 序列化…...

CSS—隐藏元素:1分钟掌握与使用隐藏元素的方法

个人博客&#xff1a;haichenyi.com。感谢关注 1. 目录 1–目录2–display:none3–visibility: hidden4–opacity: 05–position: absolute;与 left: -9999px;6–z-index 和 position7–clip-path: circle(0%) 2. display:none 标签会挂载在html中&#xff0c;但是不会在页面上…...

二、双指针——5. 移动零

二、双指针——5. 移动零 题目描述示例示例1&#xff1a;示例2&#xff1a; 思路代码 题目描述 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 请注意 &#xff0c;必须在不复制数组的情况下原地对数组进行操…...

论文笔记-NeurIPS2017-DropoutNet

论文笔记-NeurIPS2017-DropoutNet: Addressing Cold Start in Recommender Systems DropoutNet&#xff1a;解决推荐系统中的冷启动问题摘要1.引言2.前言3.方法3.1模型架构3.2冷启动训练3.3推荐 4.实验4.1实验设置4.2在CiteULike上的实验结果4.2.1 Dropout率的影响4.2.2 实验结…...

php 对接mqtt 完整版本,订阅消息,发送消息

首先打开链接如何在 PHP 项目中使用 MQTT 根据文章让所用依赖安装一下&#xff1a; composer require php-mqtt/client 安装之后弄一个部署 之后在工具里边可以相应链接上 接下来是代码&#xff1a; /**** 订阅消息* return void* throws \PhpMqtt\Client\Exceptions\Confi…...

谈谈 ES 6.8 到 7.10 的功能变迁(6)- 其他

这是 ES 7.10 相较于 ES 6.8 新增内容的最后一篇&#xff0c;主要涉及算分方法和同义词加载的部分。 自定义算分&#xff1a;script_score 2.0 Elasticsearch 7.0 引入了新一代的函数分数功能&#xff0c;称为 script_score 查询。这一新功能提供了一种更简单、更灵活的方式来…...

【苍穹外卖】问题笔记

【DAY1 】 1.VCS找不到 好吧&#xff0c;发现没安git 接着发现安全模式有问题&#xff0c;点开代码信任此项目 2.导入初始文件&#xff0c;全员爆红 好像没maven&#xff0c;配一个 并在设置里设置好maven 3.启用注解&#xff0c;见新手苍穹 pom.xml改lombok版本为1.1…...

脑机接口SSVEP 信号特征提取技术术语

目录 背景简介 1. 最小能量组合&#xff08;MEC&#xff09;和最大对比组合&#xff08;MCC&#xff09; 2. 典型相关分析&#xff08;CCA&#xff09; 3. 滤波器组CCA&#xff08;FBCCA&#xff09; 4. 二进制子带CCA&#xff08;BsCCA&#xff09; 5. 融合CCA&#xff…...

【Veristand】Veristand 预编写教程目录

很久没有更新&#xff0c;最近打算出一期Veristand教程&#xff0c;暂时目录列成下面这个表格&#xff0c;如果各位有关心的遗漏的点&#xff0c;可以在评论区提问&#xff0c;我后期可以考虑添加进去&#xff0c;但是提前声明&#xff0c;太过小众的点我不会&#xff0c;欢迎各…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端&#xff0c;同时完善学生端的构建。本次工作主要包括&#xff1a; 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

django filter 统计数量 按属性去重

在Django中&#xff0c;如果你想要根据某个属性对查询集进行去重并统计数量&#xff0c;你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求&#xff1a; 方法1&#xff1a;使用annotate()和Count 假设你有一个模型Item&#xff0c;并且你想…...

python报错No module named ‘tensorflow.keras‘

是由于不同版本的tensorflow下的keras所在的路径不同&#xff0c;结合所安装的tensorflow的目录结构修改from语句即可。 原语句&#xff1a; from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后&#xff1a; from tensorflow.python.keras.lay…...

JS设计模式(4):观察者模式

JS设计模式(4):观察者模式 一、引入 在开发中&#xff0c;我们经常会遇到这样的场景&#xff1a;一个对象的状态变化需要自动通知其他对象&#xff0c;比如&#xff1a; 电商平台中&#xff0c;商品库存变化时需要通知所有订阅该商品的用户&#xff1b;新闻网站中&#xff0…...

基于 TAPD 进行项目管理

起因 自己写了个小工具&#xff0c;仓库用的Github。之前在用markdown进行需求管理&#xff0c;现在随着功能的增加&#xff0c;感觉有点难以管理了&#xff0c;所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD&#xff0c;需要提供一个企业名新建一个项目&#…...

【VLNs篇】07:NavRL—在动态环境中学习安全飞行

项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战&#xff0c;克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...

Linux 下 DMA 内存映射浅析

序 系统 I/O 设备驱动程序通常调用其特定子系统的接口为 DMA 分配内存&#xff0c;但最终会调到 DMA 子系统的dma_alloc_coherent()/dma_alloc_attrs() 等接口。 关于 dma_alloc_coherent 接口详细的代码讲解、调用流程&#xff0c;可以参考这篇文章&#xff0c;我觉得写的非常…...

Python 高级应用10:在python 大型项目中 FastAPI 和 Django 的相互配合

无论是python&#xff0c;或者java 的大型项目中&#xff0c;都会涉及到 自身平台微服务之间的相互调用&#xff0c;以及和第三发平台的 接口对接&#xff0c;那在python 中是怎么实现的呢&#xff1f; 在 Python Web 开发中&#xff0c;FastAPI 和 Django 是两个重要但定位不…...

比特币:固若金汤的数字堡垒与它的四道防线

第一道防线&#xff1a;机密信函——无法破解的哈希加密 将每一笔比特币交易比作一封在堡垒内部传递的机密信函。 解释“哈希”&#xff08;Hashing&#xff09;就是一种军事级的加密术&#xff08;SHA-256&#xff09;&#xff0c;能将信函内容&#xff08;交易细节&#xf…...