Сервер NIM должен иметь тот же или более высокий уровень AIX, что и устанавливаемый клиент.
Он заменяет все экземпляры _
, потому что ${1//_/.}
является глобальным(${1/_/.}
не будет -глобальным, но заменяет первое совпадение , а не последнее ).
Вместо этого вы можете использовать POSIX ${1%_*}
и ${1##*_}
, чтобы удалить самый короткий суффикс и самый длинный префикс, а затем воссоединить их:
find. -name '*_pdf' -type f -exec sh -c 'mv "$1" "${1%_*}.${1##*_}"' sh {} \;
или
find. -name '*_pdf' -type f -exec sh -c 'for f do mv "$f" "${f%_*}.${f##*_}"; done' sh {} +
Для нескольких внутренних номеров:
find. \( -name '*_pdf' -o -name '*_jpg' -o -name '*_jpeg' \) -type f -exec sh -c '
for f do mv "$f" "${f%_*}.${f##*_}"; done
' sh {} +
Я удалил --
конец -из -разделителя опций -здесь это не нужно, так как find
префикс имен ./
.
Вы можете добавить параметр -i
к mv
, если существует риск того, что в данном каталоге существуют и file_pdf
, и file.pdf
, и вы хотите, чтобы у вас была возможность не затирать существующий file.pdf
. ].
С перламутровым rename
инструментом:
find... rename 's/_pdf$/.pdf/' {} +
Вы можете запустить это отдельно для разных ваших расширений или заменить сразу несколько «общих расширений»:
find... rename 's/_(pdf|jpg|jpeg)$/.\1/' {} +
Если у вас нет perl rename, вы можете использовать другойrename
инструмент:
find... rename '_pdf' '.pdf' {} +
Обязательная zsh
версия:
autoload zmv # best in ~/.zshrc
zmv -v '(**/)(*)_(pdf|jpg|jpeg)(#q.)' '$1$2.$3'
((#q.)
заключается в ограничении обычными файлами, как это делает find
-type f
. Измените на (#qD.)
, если вы также хотите переименовать скрытые файлы или файлы в скрытых каталогах, как это делает find
. Замените -v
на -n
для работы всухую -).