Я использую галерею Wordpress Eazyest для создания 2000 галерей. Некоторые файлы имеют двойные или тройные тире в именах файлов. Например: abc --- def.jpg Эти файлы загружаются через FTP.
В админке WordPress и внешнем HTML, которые они заменяют, этот файл получает имя abc-def.jpg, поэтому они становятся неработающими ссылками / ссылками.
Есть ли способ, которым я могу заменить все --- или - в папке с одним символом, используя SSH? Я на Ubuntu 12.04.
Чтобы сопоставить / изменить этот шаблон в пределах одного каталога, это должно быть так же просто, как
rename -- 's/-+/-/' *.jpg
(заменить одну или несколько последовательных черточек одной чертой), но сначала выполнить пробный прогон, добавив флаги -n и -v
rename -nv -- 's/-+/-/' *.jpg
Если в одном имени есть несколько экземпляров нескольких тире (например, abc --- def - ghi.jpg), вам нужно добавить g
(global) switch
rename -- 's/-+/-/g' *.jpg
Если вам нужно рекурсивно изменить имена в подкаталогах галереи, вы можете использовать команду переименования в качестве действия exec
для команды find
, например,
find /path/to/dir -name '*.jpg' -exec rename -nv -- 's/-+/-/g' {} +
или, если ваша удаленная оболочка поддерживает опцию оболочки globstar
, вы можете попробовать заставить команду переименования действовать рекурсивно самостоятельно, используя глобус, подобный **/*.jpg
ssh
в Ubuntu box, на котором вы установили Wordpress, cd
в основной каталог, содержащий все галереи; find -iname '*--*' -exec sh -c 'mv "{}" "$(echo {} | tr -s '-')"' \;
. Предполагая только один набор ---
или --
в каждом файле:
#!/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
для корневой папки всеми файлы.