我正在使用 Wordpress Eazyest 图库创建 2000 个图库。有些文件的文件名中有双破折号或三破折号。例如:abc---def.jpg 这些文件是通过 FTP 上传的。
在 Wordpress 管理员和前端 HTML 上,它们被替换,该文件被命名为 abc-def.jpg,因此它们成为断开的链接/ src。
有没有办法使用 SSH 将文件夹中的所有 --- 或 -- 替换为单个 - 字符?我在 Ubuntu 12.04 上。
答案1
要在单个目录中匹配/更改该模式,应该很简单
rename -- 's/-+/-/' *.jpg
(用单个破折号替换一个或多个连续的破折号)但首先通过添加 -n 和 -v 标志进行试运行
rename -nv -- 's/-+/-/' *.jpg
如果单个名称中有多个破折号的多个实例(例如 abc---def--ghi.jpg),那么您将需要添加g
(全局)开关
rename -- 's/-+/-/g' *.jpg
如果您需要递归更改图库子目录中的名称,那么您可以使用重命名命令作为命令exec
的操作find
,例如
find /path/to/dir -name '*.jpg' -exec rename -nv -- 's/-+/-/g' {} +
或者,如果你的远程 shell 支持globstar
shell 选项,你可以尝试使用类似下面的 glob 让 rename 命令自行递归执行**/*.jpg
答案2
ssh
进入您安装 Wordpress 的 Ubuntu 框;cd
进入包含所有画廊的主目录;- 跑步
find -iname '*--*' -exec sh -c 'mv "{}" "$(echo {} | tr -s '-')"' \;
。
答案3
假设每个文件中只有一组---
或:--
#!/bin/bash -e
## Substitute /path/to/folder for the root folder
if cd /path/to/folder
then
find . -name '*---*.jpg' -exec bash -c 'file={}; mv -v "${file}" "${file/---/-}"' ';'
find . -name '*--*.jpg' -exec bash -c 'file={}; mv -v "${file}" "${file/--/-}"' ';'
fi
ssh
进入机器然后运行上面的代码,/path/to/folder
用所有文件替换根文件夹。