从文件名中删除“~”

从文件名中删除“~”

我的 NAS 上有一个有限的 bash shell,并且有很多~文件名中包含 char 的文件。例如,我有一个文件2018/10/example~1.jpg,我必须将其移动并重命名为allFiles/2018-10-example_1.jpg.

我必须将 替换~为,并在文件名中_添加路径,-而不是使用。/

请你帮助我好吗?

PS 仅限带有.jpg//扩展名的.png文件.mov

答案1

我没有 QNAP,但我相信它的外壳实际上是 BusyBox。这应该适用于 BusyBox 和 bash(尽管使用 bash,您还需要安装 find+cut+awk):

假设年份目录(即“2018”)和“allFiles”目录位于同一级别,并且该级别是 shell 中当前的工作目录:

find . -name '*.jpg' | cut -c3- | awk '{ newname=$0; gsub(/~/, "_", newname); gsub(/\//, "-", newname); gsub(/^/, "allFiles/", newname); print "mv " $0 " " newname; }'

这将生成一组命令来移动所有 .jpg 文件。首先检查命令以确保它们是合理的。然后通过在上述命令末尾添加“| sh”来运行它们。

然后将上面的“*.jpg”替换为您要处理的另一个文件扩展名,然后重复。

相关内容