一、场景描述
在终端窗口中,用
我是在
二、实现过程
命令1
for filepath in `find /d/LearningMaterials/数学/数学/高中/一数/偏基础(基础+中档版)/基础篇2.0电子版/ -name *无答案*`; do cp $filepath /c/Users/admin/Desktop/高中数学/基础版; done
结果:
于是把
find /d/LearningMaterials/数学/数学/高中/一数/偏基础(基础+中档版)/基础篇2.0电子版/ -name *无答案*
结果:
发现文件路径和文件名存在空格。
查找解决办法
复制时,如何处理带空格的文件路径或文件名。
查找结果:
使用单引号
命令2
for filepath in `find /d/LearningMaterials/数学/数学/高中/一数/偏基础(基础+中档版)/基础篇2.0电子版/ -name *无答案*`; do echo ""$filepath"" /c/Users/admin/Desktop/高中数学/基础版; done
结果:
发现,文件路径还是被分割了。
而且,双引号也成功添加到每个切割的部分上了。说明,语句修改对的,但是,没达到预期效果。
这时候,我感觉,是在
但是,
继续查找解决办法
查找结果∶
更改
上图代码:
只需要更改 shell分隔符即可 在for循环之前修改IFS变量,示例: OLDIFS="$IFS" #备份旧的IFS变量 IFS=$' ' #修改分隔符为换行符 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=$' ' 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
所以,