![如何从文件名中删除某些单词?](https://linux22.com/image/195148/%E5%A6%82%E4%BD%95%E4%BB%8E%E6%96%87%E4%BB%B6%E5%90%8D%E4%B8%AD%E5%88%A0%E9%99%A4%E6%9F%90%E4%BA%9B%E5%8D%95%E8%AF%8D%EF%BC%9F.png)
我的文件位于以下目录中:import/images
Documents\ProductImages\1.jpg
Documents\ProductImages\2.jpg
Documents\ProductImages\3.jpg
如何Documents\ProductImages\
从文件名中删除?
答案1
你可以试试这个:
for i in 'Documents\ProductImages\'*.jpg; do mv -n -- "$i" "${i##*\\}"; done
扩展${i##*\\}
删除了与模式匹配的最长前缀,这里:直到最后一个反斜杠的所有内容都需要用另一个反斜杠进行转义。
答案2
rename
如果您的系统上有的话,通常是处理此类事情的正确工具。
我知道有两个可能的版本。它们具有不同的语法,但都可以适用于您的示例。
通常部署在 Red Hat 系列上的版本是这样的
rename 'Documents\ProductImages\' '' *.jpg
其他版本可以这样做
rename 's/.*\\//' *.jpg
这假设您只想保留最后一个之后的部分\
。如果你想更具体:
rename 's/^Documents\\ProductImages\\//' *.jpg