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命令查询的结果是正常的,没有切割。

继续查找解决办法
更改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循环之后,出了问题。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MySQL的下载、安装、配置、登录,配置(图+文)(超级详细)

一、 软件的下载 1. 下载地址 官网: https://www.mysql.com 2. 打开官网,点击 DOWNLOADS 然后,点击 MySQL Community(GPL) Downloads 3. 点击 MySQL Community Server 4. 在 General Availability(GA) Releases 中选择适合的版本 …

基于SpringBoot的智慧社区居家养老健康管理系统

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式 🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 &…

【Unity小技巧】3D人物移动脚步和跳跃下落音效控制

文章目录 单脚步声多脚步声,跳跃落地音效播放不同材质的多脚步声完结 单脚步声 public AudioClip walkingSound; public AudioClip runningSound;//移动音效 public void MoveSound() {// 如果在地面上并且移动长度大于0.9if (isGround && moveDirection.s…

上位机图像处理和嵌入式模块部署(qt图像处理)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 很多人一想到图像处理,本能的第一反应就是opencv,这也没有错。但是呢,这里面还是有一个问题的,不知…

利用Anaconda安装pytorch和paddle深度学习环境+pycharm安装后不能调用pytorch和paddlepaddle框架

问题现象: 之前安装后不能在添加pytorch和paddlepaddle框架 原因(疑似): 在终端中显示pytorch和paddle在C盘但是安装是安装在J盘 解决办法: 卸载、删除文件重新安装后可以看到文件位置在J盘中 但是选择时还是显示C…

JavaEE中什么是Web容器?

Web容器(也称为Servlet引擎)是一个用于执行Java Servlet和JSP的服务器端环境。它负责管理和执行在其上运行的Web应用程序。 Tomcat是Web容器 Apache Tomcat 是一个流行的开源的Web容器,它实现了Java Servlet和JavaServer Pages(…

Linux中的软件包管理器yum

目录 1.什么是软件包 2.关于 rzsz 3.查看软件包 4.如何安装软件 5.如何卸载软件 1.什么是软件包 ● 在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序. ● 但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理…

《WebKit 技术内幕》之五(3): HTML解释器和DOM 模型

3 DOM的事件机制 基于 WebKit 的浏览器事件处理过程:首先检测事件发生处的元素有无监听者,如果网页的相关节点注册了事件的监听者则浏览器会将事件派发给 WebKit 内核来处理。另外浏览器可能也需要处理这样的事件(浏览器对于有些事件必须响应…

【GitHub项目推荐--智能家居项目】【转载】

如果你具备硬件、软件知识,这个项目肯定符合你的胃口。 物美智能是一套软硬件结合的开源项目,该系统可助你快速搭建自己的智能家居系统。你可以学习到设备的集成和软硬件交互。 PC 端或者手机与服务端通信,单片机可以接受遥控设备和服务器的…

【C++干货基地】namespace超越C语言的独特魅力(文末送书)

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 引入 哈喽各位铁汁们好啊,我是博主鸽芷咕《C干货基地》是由我的襄阳家乡零食基地有感而发,不知道各位的…

【后端】深入浅出Node.js

文章目录 1.Node简介1.1 诞生历程1.2 阻塞IO和异步IO 【后端目录贴】 1.Node简介 1.1 诞生历程 Node特点 事件驱动、非阻塞I/O node和chrome浏览器区别 除了HTML、WebKit和显卡这些UI相关技术没有支持外,Node结构与Chrome十分相似,他们都是基于事件驱动…

echarts dataZoom实现左右滑动与放大缩小 并精确控制显示几条数据

//Xdata是横轴的长度(若x轴80条数据,默认显示最新的20条) var start Xdata.length - 20; var end Xdata.length - 1; dataZoom: [ type: slider, show: true, startValue: dataZoomStart, endValue: dataZoomEnd, dataBackground: { ar…

【UEFI基础】EDK网络框架(UDP4)

UDP4 UDP4协议说明 UDP的全称是User Datagram Protocol,它不提供复杂的控制机制,仅利用IP提供面向无连接的通信服务。它将上层应用程序发来的数据在收到的那一刻,立即按照原样发送到网络。 UDP报文格式: 各个参数说明如下&…

Spring Boot3.2.2整合MyBatis Plus3.5.5

目录 1.前置条件 2.导坐标 3.配置数据源 4.配置mapper扫描路径 5.MyBatis Plus代码生成器整合 1.导坐标 2.编写代码生成逻辑 1.前置条件 已经初始化好一个spring boot项目且版本为3X&#xff0c;项目可正常启动 2.导坐标 <dependency><groupId>com.baomid…

《WebKit 技术内幕》之六(1): CSS解释器和样式布局

《WebKit 技术内幕》之六&#xff08;1&#xff09;&#xff1a;CSS解释器和样式布局 CSS解释器和规则匹配处于DOM树建立之后&#xff0c;RenderObject树之前&#xff0c;CSS解释器解释后的结果会保存起来&#xff0c;然后RenderObject树基于该结果来进行规范匹配和布局计算。当…

NodeJs 第二十章 代理

在计算机网络中&#xff0c;代理是一种中间服务&#xff0c;能够代理用户与网络资源之间的通信。代理服务器可以缓存网页内容、过滤网络流量或隐藏用户的真实IP地址等功能。 在日常开发中&#xff0c;我们接触最多的是客户端发送ajax到服务端。但是服务端并不是 node &#xf…

搭建DNS 服务

安装DNS 服务 [rootlocalhost ~]# yum install bind -y Complete! [rootlocalhost ~]# DNS 配置文件 [rootlocalhost ~]# vim /etc/named.conf [rootlocalhost ~]# cat -n /etc/named.conf 1 // ... 12 options { 13 #listen-on port 53 { 127.0.0.1; }; 14 list…

【蓝桥杯冲冲冲】动态规划初步[USACO2006 OPEN] 县集市

蓝桥杯备赛 | 洛谷做题打卡day13 文章目录 蓝桥杯备赛 | 洛谷做题打卡day13题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示样例说明数据规模与约定 思路&#xff1a;方程&#xff1a; 题解代码我的一些话 [USACO2006 OPEN] 县集市 The County Fair 题目描述 每年…

说说你对归并排序的理解?如何实现?应用场景?

一、是什么 归并排序&#xff08;Merge Sort&#xff09;是建立归并操作上的一种有效&#xff0c;稳定的排序算法&#xff0c;该算法是采用分治法的一个非常典型的应用 将已有序的子序列合并&#xff0c;得到完全有序的序列&#xff0c;即先使每个子序列有序&#xff0c;再使…

几个简单好用Python库,让你工作效率翻倍

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com Python是一门强大的编程语言&#xff0c;不仅可以进行软件开发&#xff0c;还可以通过各种优秀的第三方库来提高工作效率。本文将介绍几个简单而好用的Python库&#xff0c;它们可以帮助你在各种领域提高工作效率…