На этот вопрос уже есть ответ здесь:
Мне нужно переименовать только каталоги, а не файлы, и я хочу сделать это с помощью переименовать
.
Есть ли способ сделать это?
В руководстве ничего не говорится о различии между каталогами и файлами.
Эта команда меняет все, независимо от каталога или файлов:
rename 's/ /\n/g' *
Эта команда решила мою проблему:
rename 's/ /\n/g' */
Мне нужна косая черта позади нее.
rename
не различает файлы и папки.
Оболочка ответственна за расширение подстановочного знака *
в файлы и папки.
*
будет расширен до всех нескрытых файлов и папок. */
будет расширен до всех нескрытых папок.Но я не знаю ни о каком способе расшириться до файлов только. Можно использовать find -exec
вместо этого.
только папки:
rename 's/ /\n/g' */
или
find . -maxdepth 1 -type d -exec rename 's/ /\n/g' {} +
Только файлы:
find . -maxdepth 1 -type f -exec rename 's/ /\n/g' {} +
Отметьте это find
также найдет спрятанные файлы, в отличие от этого, *
(если Вы не включаете dotglob
опция оболочки путем выполнения shopt -s dotglob
).
zsh
кажется, может соответствовать файлам только подстановочным знакам.
Отказ от ответственности: Я не рекомендовал бы добавить новые строки к именам файлов, поскольку это может доставить неприятности и повредить много сценариев.