Linux:使用for+find查找文件并cp到其他目录,文件名带有空格

一、场景描述

在终端窗口中,用shell命令,批量拷贝文件到指定目录。
我是在Windows系统上,通过git bash终端来执行shell命令的。

二、实现过程

命令1

for filepath in `find /d/LearningMaterials/数学/数学/高中/一数/偏基础(基础+中档版)/基础篇2.0电子版/ -name *无答案*`; do cp $filepath /c/Users/admin/Desktop/高中数学/基础版; done

结果:
在这里插入图片描述
于是把find命令单独拿出来执行:

find /d/LearningMaterials/数学/数学/高中/一数/偏基础(基础+中档版)/基础篇2.0电子版/ -name *无答案*

结果:
在这里插入图片描述
发现文件路径和文件名存在空格。

查找解决办法
复制时,如何处理带空格的文件路径或文件名。
查找结果:
使用单引号('')或双引号("")包裹文件名字。
在这里插入图片描述

命令2

for filepath in `find /d/LearningMaterials/数学/数学/高中/一数/偏基础(基础+中档版)/基础篇2.0电子版/ -name *无答案*`; do echo "\"$filepath\"" /c/Users/admin/Desktop/高中数学/基础版; done

结果:
在这里插入图片描述
发现,文件路径还是被分割了。
而且,双引号也成功添加到每个切割的部分上了。说明,语句修改对的,但是,没达到预期效果。
这时候,我感觉,是在for循环读取find结果集时,就已经切割了。
但是,find命令查询的结果是正常的,没有切割。

继续查找解决办法
for循环处理带空格的字符串。
查找结果∶
更改shell分隔符即可
在这里插入图片描述
上图代码:

只需要更改 shell分隔符即可
在for循环之前修改IFS变量,示例:
OLDIFS="$IFS"  #备份旧的IFS变量
IFS=$'\n'   #修改分隔符为换行符for i in `cat aaa`  #aaa文件中存放着公钥
do
echo "$i"
done
IFS="$OLDIFS"  #还原IFS变量

于是,成功解决问题。

三、最终实现

admin@DESKTOP-0DH3J68 MINGW64 /d/LearningMaterials/数学/数学/高中/一数/偏基础(基础+中档版)/基础篇2.0电子版
$ OLDIFS="$IFS"admin@DESKTOP-0DH3J68 MINGW64 /d/LearningMaterials/数学/数学/高中/一数/偏基础(基础+中档版)/基础篇2.0电子版
$ IFS=$'\n'admin@DESKTOP-0DH3J68 MINGW64 /d/LearningMaterials/数学/数学/高中/一数/偏基础(基础+中档版)/基础篇2.0电子版
$ for filepath in `find /d/LearningMaterials/数学/数学/高中/一数/偏基础(基础+中档版)/基础篇2.0电子版/ -name *无答案*`; do cp "$filepath" /c/Users/admin/Desktop/高中数学/基础版; done

在这里插入图片描述
所以,命令1的问题的本质在于shell分隔符是空格导致的。而不是文件名中带有空格导致的问题。因为,find的结果是正常的。但是,经过for循环之后,出了问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/421665.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2.上传图片到Minio服务中

上传图片 界面原型 第一步: 用户在课程信息编辑界面可以上传课程图片或者修改上传的课程图片 第二步: 请求媒资管理服务将课程图片上传至分布式文件系统同时在媒资管理数据库保存文件信息,上传成功后返回图片在MinIO中的地址 第三步: 请求内容管理服务保存课程信息含课程封…

C语言实战系列一:经典贪食蛇

C语言学习必须实战&#xff0c;并且学完语法后就必须立即用实战来巩固。一般需要10来个比较复杂的程序才能掌握C语言。今天就教大家第一个小程序&#xff0c;贪食蛇。 首先上代码 一、代码 #include <stdio.h> #include <stdlib.h> #include <curses.h> #…

代码随想录 Leetcode239. 滑动窗口最大值

题目&#xff1a; 代码&#xff08;首刷看解析 2024年1月22日&#xff09;&#xff1a; class Solution { private:class MyQueue{public:deque<int> que;void pop(int val){if (!que.empty() && que.front() val) {que.pop_front();}}void push(int val){whil…

C语言总结十三:程序环境和预处理详细总结

了解程序的运行环境可以让我们更加清楚的程序的底层运行的每一个步骤和过程&#xff0c;做到心中有数&#xff0c;预处理阶段是在预编译阶段完成&#xff0c;掌握常用的预处理命令语法&#xff0c;可以让我们正确的使用预处理命令&#xff0c;从而提高代码的开发能力和阅读别人…

亚热带常见病虫害识别系统的系统总体设计

文章目录 系统需求分析系统结构设计系统功能 系统需求分析系统时序图系统活动图 系统数据库设计数据库概念设计数据库逻辑设计数据库物理设计 小结 系统需求分析 系统结构设计 系统功能 &#xff08;1&#xff09;登录/注册 用户可以登陆系统,在已经登录过的情况下,可以输入邮…

BL121ML OPC UA网关实现Modbus、楼宇自控、电力协议转OPC UA

随着物联网技术的迅猛发展&#xff0c;人们深刻认识到在智能化生产和生活中&#xff0c;实时、可靠、安全的数据传输至关重要。在此背景下&#xff0c;高性能的物联网数据传输解决方案——协议转换网关应运而生&#xff0c;广泛应用于工业自动化和数字化工厂应用环境中。 钡铼…

linux杀毒软件clamav安装使用

1、下载 在下面地址下载&#xff1a;https://www.clamav.net/downloads 2、安装 clamav-1.2.1.linux.x86_64.rpm放在/home路径。 执行&#xff1a; chmod -R 777 /home/clamav-1.2.1.linux.x86_64.rpm rpm -ivh clamav-1.2.1.linux.x86_64.rpm3、下载病毒库 下载路径&am…

【论文解读】PV-RCNN: Point-Voxel Feature Set Abstraction for 3D Object Detection

PV-RCNN 摘要引言方法3D Voxel CNN for Efficient Feature Encoding and Proposal GenerationVoxel-to-keypoint Scene Encoding via Voxel Set AbstractionKeypoint-to-grid RoI Feature Abstraction for Proposal Refinement 实验结论 摘要 我们提出了一种新的高性能3D对象检…

100天精通Python(实用脚本篇)——第113天:基于Tesseract-OCR实现OCR图片文字识别实战

文章目录 专栏导读1. OCR技术介绍2. 模块介绍3. 模块安装4. 代码实战4.1 英文图片测试4.2 数字图片测试4.3 中文图片识别 书籍分享 专栏导读 &#x1f525;&#x1f525;本文已收录于《100天精通Python从入门到就业》&#xff1a;本专栏专门针对零基础和需要进阶提升的同学所准…

Axios取消请求:AbortController

AbortController AbortController() 构造函数创建了一个新的 AbortController 实例。MDN官网给出了一个利用AbortController取消下载视频的例子。 核心逻辑是&#xff1a;利用AbortController接口的只读属性signal标记fetch请求&#xff1b;然后在需要取消请求的时候&#xff0…

10.编写Shell脚本(1)

1.shell的组成 脚本声明 #!/bin/bash脚本注释 以#开头脚本命令 实现脚本的功能 2.分类 交互式(Interactive):用户每输入一条命令就立即执行。 批处理(Batch):由用户事先编写好一个完整的Shell脚本&#xff0c;Shel会一次性执行脚本中诸多的命令 shel…

HarmonyOS开源软件Notice收集策略说明

开源软件Notice是与项目开源相关的文件&#xff0c;收集这些文件的目的是为了符合开源的规范。 收集目标 只收集打包到镜像里面的模块对应的License&#xff1b;不打包的都不收集&#xff0c;比如构建过程使用的工具&#xff08;如clang、python、ninja等&#xff09;都是不收…