我的 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”替换为您要处理的另一个文件扩展名,然后重复。