linux - 如何处理 MV 命令中的空格
问题描述
我有以下脚本,它根据特定的文件名字符串重命名文件。该脚本工作正常,直到我不得不将它应用到一个包含带空格的文件夹名称的目录。
脚本:
for file in `find /home/splunkLogs/Captin/PPM\ Images/PXT -type f -name '*.jpg'`; do mv -v "$file" "${file/-0.jpg/_Page_1.jpg}"; done
您会注意到文件名“PPM Images”,其中有一个空格。我添加了一个反斜杠,以便路径可读,但我收到错误“mv:无法统计/home/splunkLogs/Captin/PPM:没有这样的文件或目录。我还尝试将文件夹名称放在路径中的引号中并收到同样的错误任何人都可以指导我使用 MV 命令处理文件名空间的解决方案吗?
解决方案
所以不要使用for
. 阅读https://mywiki.wooledge.org/BashFAQ/001。
find /home/splunkLogs/Captin/PPM\ Images/PXT -type f -name '*.jpg' |
while IFS= read -r file; do
mv -v "$file" "${file/-0.jpg/_Page_1.jpg}"
done
或更好:
find /home/splunkLogs/Captin/PPM\ Images/PXT -type f -name '*.jpg' -print0 |
while IFS= read -r -d '' file; do
mv -v "$file" "${file/-0.jpg/_Page_1.jpg}"
done
不要使用反引号`。使用$(...)
替代是非常优选的。
推荐阅读
- javascript - 从 FastAPI 获取文件时如何使用浏览器缓存?
- python - Pandas 在不同列上返回具有条件行 statemnet 的列的值
- c# - ERR_SSL_VERSION_OR_CIPHER_MISMATCH 在 Raspberry PI 上访问我的 asp.net Web api 时
- android-jetpack-navigation - 为什么导航可组合调用两次?
- bash - 未解析 Bash 脚本参数
- python - 我的 Python 程序因“致命的 Python 错误:取消分配无”而崩溃。这个错误是什么意思?
- javascript - 使用节点 playwright 在 html 元素上添加 onclick 功能
- pine-script - 用松木字体在吞噬蜡烛上方的条目
- javascript - 从数组javascript获取匹配的范围值
- python - 如何根据列并排重塑熊猫数据框?