Переименуйте все файлы в папке с префиксом "Unix_", то есть предположите, что папка имеет два файла a.txt и b.pdf, то оба они должны быть переименованы из одной команды в Unix_a.txt и Unix_b.pdf
Переименуйте все файлы в папке с префиксом в одной команде unix
Ответ 1
Если ваши имена файлов содержат без пробелов, и у вас нет подкаталогов, вы можете использовать простой цикл for
:
$ for FILENAME in *; do mv $FILENAME Unix_$FILENAME; done
В противном случае используйте удобную команду rename
(которая является perl script) - хотя она может быть недоступна из коробки в каждом Unix (например, OS X не поставляется с rename
).
Краткий обзор на debian-administration.org:
Если ваши имена файлов содержат пробелы, проще использовать find
, в Linux должно работать следующее:
$ find . -type f -name '*' -printf "echo mv '%h/%f' '%h/Unix_%f\n'" | sh
В BSD-системах, к сожалению, нет опции -printf
. Но GNU findutils должен быть установлен (например, Mac OS X с brew install findutils
).
$ gfind . -type f -name '*' -printf "mv \"%h/%f\" \"%h/Unix_%f\"\n" | sh
Ответ 2
Попробуйте выполнить команду rename
в папке с файлами:
rename 's/^/Unix_/' *
Ответ 3
Я думаю, что это именно то, что вы ищете:
ls | xargs -I {} mv {} Unix_{}
Да, это просто, элегантно и мощно, и алос oneline-comand of courese. Вы можете получить более подробное введение от меня на странице: Переименовать файлы и каталоги (Добавить префикс)
Ответ 4
Недавно я столкнулся с такой же ситуацией и нашел более легкое встроенное решение. Я поделился им здесь, чтобы он помог другим людям найти решение.
В OS X Yosemite Apple интегрировала функции переименования пакетов прямо в Finder. Подробная информация доступна здесь. Я также скопировал приведенные ниже шаги,
Переименовать несколько элементов
-
Выберите элементы, затем нажмите Control один из них.
-
В контекстном меню выберите "Переименовать элементы".
-
Во всплывающем меню ниже Переименовать элементы папок, выберите замену текста в именах, добавьте текст в имена или измените формат имени.
-
Заменить текст: введите текст, который вы хотите удалить, в поле "Поиск", затем введите текст, который вы хотите добавить, в поле "Заменить на".
-
Добавить текст: введите текст, который вы хотите добавить в поле, затем выберите, чтобы добавить текст до или после текущего имени.
-
Формат: выберите формат имени для файлов, затем выберите индекс, счетчик или дату до или после имени. Введите имя в поле "Пользовательский формат", затем введите номер, с которого вы хотите начать.
-
-
Нажмите "Переименовать".
Если у вас есть общий шаблон в ваших файлах, вы можете использовать текст "Заменить", иначе "Добавить текст" также выполнит задание.
Ответ 5
Вы можете использовать -i
вместо -I {}
ls | xargs -i mv {} unix_{}
Это также отлично работает.
-
ls
- перечислены все файлы в каталоге -
xargs
- принимает все файлы по строкам из-за опции-i
-
{}
является заполнителем для всех файлов, необходимо, еслиxargs
получает более двух аргументов в качестве ввода
Использование awk:
ls -lrt | grep '^-' | awk '{print "mv "$9" unix_"$9""}' | sh
Ответ 6
Также работает для элементов с пробелами и игнорирует каталоги
for f in *; do [[ -f "$f" ]] && mv "$f" "unix_$f"; done
Ответ 7
С rnm (вам нужно будет установить его):
rnm -ns 'Unix_/fn/' *
или
rnm -rs '/^/Unix_/' *
P.S: Я являюсь автором этого инструмента.