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循环之后,出了问题。

相关推荐

  1. Linux文件目录管理命令---- cp 命令

    2024-01-22 19:02:01       39 阅读
  2. Linux 目录磁盘满了,怎么查找文件

    2024-01-22 19:02:01       21 阅读
  3. Linux 文件目录详解

    2024-01-22 19:02:01       11 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-22 19:02:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-22 19:02:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-22 19:02:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-22 19:02:01       18 阅读

热门阅读

  1. 大模型镜像打包实战:CodeGeeX2为例

    2024-01-22 19:02:01       39 阅读
  2. ansible-设置互信

    2024-01-22 19:02:01       26 阅读
  3. web搭建和nfs

    2024-01-22 19:02:01       37 阅读
  4. 前端上传图片至OSS

    2024-01-22 19:02:01       35 阅读
  5. 网络安全事件分级指南

    2024-01-22 19:02:01       34 阅读
  6. Leetcode 3016. Minimum Number of Pushes to Type Word II

    2024-01-22 19:02:01       36 阅读