1

Я хочу найти все файлы, которые заканчиваются на file.one.ext и переименовать их в file.ext

Мне удалось получить это далеко, однако затем он перемещает файл в рабочий каталог, а не каталог, в котором он нашел файл.

find . -name "file.one.ext" -exec bash -c 'mv "$0" "file.ext"' {} \;

$ 0 содержит полный путь и имя файла, но как мне получить этот каталог, чтобы присоединить его к новому имени файла.

У меня также установлено rename , если это облегчает задачу. Я на MacOS Сьерра.

1 ответ1

3

Как переименовать файл в каталоге, в котором он находится?

Все, что вам не хватает, это dirname из команды:

find . -name "file.one.ext" -exec bash -c 'mv "$0" "$(dirname $0)/file.ext"' {} \;

пример

mkdir test1 test2
touch test1/file.one.ext test2/file.one.ext
find . -name "file.one.ext" -exec bash -c 'mv "$0" "$(dirname $0)/file.ext"' {} \;
ls test1/ test2/

test1/:
file.ext

test2/:
file.ext

демонстрация

анимированный GIF пример вывода

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .