Я знаю, как переименовать файлы в Unix:
$ mv ~/folder/subfolder/file.txt ~/folder/subfolder/file.sh
^-------this part------^ ^------this part-------^
Повторение занимает слишком много времени ~/folder/subfolder/file
.
Есть ли более быстрый способ?
rename
.rename
это лучшее решение, потому чтоrename
никогда не просят вас переопределить существующий файл или нет.Вы также можете использовать
rename
(часть пакета util-linux).Смотрите страницу переименования man для более подробной информации.
источник
{a,b}
функциональность оболочек .rename
это совершенно другая программа на основе Perl. Там вы бы использовалиrename 's/txt$/sh/' ~/folder/subfolder/file.txt
.mmv
.Все вышеперечисленное хорошо. Это также будет работать:
источник
sudo
часть.sudo
?sudo
ним интерпретируется~
как домашний каталог корня.sudo
mv
cd
sudo
(
Нет. Вам нужно указать полный путь к файлу, чтобы переименовать его. Единственная альтернатива - перейти в целевую папку перед запуском
mv
:В качестве альтернативы вы могли бы написать небольшую функцию, которая переименовывает файл в целевой каталог. Например, добавьте эти строки в файл инициализации оболочки (
~/.bashrc
если вы используетеbash
):Затем откройте новый терминал или просто запустите,
source ~/.bashrc
чтобы перечитать файл инициализации, и вы можете сделать:источник
lmv()
функцию. Я этого не знал :)Просто для того, чтобы расширить полезность ответа cuonglm (НЕ принимать кредит, поскольку я люблю его решение), и его ответ является правильным.
Вариант использования: мы часто хотим записать файл в удаленном месте (реальная проблема), например, /folder/subfolder/configFile.dat TO configFile.dat.orig
Эта форма команды добавляет расширение файла (не заменяя оригинальное расширение)
Объяснил: «{, .orig}» означает заменить (ничего) в конце имени файла на (что-то) «.orig»
ИЛИ удалить расширение файла (отменить переименование)
Примечание. Тем не менее, тема «Самый быстрый способ переименования файлов без повторного ввода пути к каталогу».
источник
Да. Если вы используете
bash
, вы делаетеsudo pushd ~/folder/subfolder/ && sudo mv ./file.txt ./file.sh && popd
.Который на самом деле больше и может потерпеть неудачу, если вы потеряли права доступа к исходному каталогу, когда вы сделали
popd
.источник
pushd
иpopd
здесь? Чем это лучше чемcd ~/folder/subfolder/ && sudo mv file.txt file.sh
?pushd
popd
является использованиеcd
и возврат сcd -
.popd
это лучше, чемcd ../../
когда это возможно.(cd /path/to/there && mv x y)
тогда (с подоболочкой)sudo
раньшеpushd
. Так что полная команда должна бытьpushd ...dir && sudo mv old new && popd
. В качестве альтернативы это можно сделать,(cd ...dir; sudo mv old new)
потому что запуск в subshell позаботится об изменениях каталога автоматически.