Я знаю, як перейменувати файли в Unix:
$ mv ~/folder/subfolder/file.txt ~/folder/subfolder/file.sh
^-------this part------^ ^------this part-------^
Повторити це потрібно занадто багато часу ~/folder/subfolder/file.
Чи є швидший шлях?
Я знаю, як перейменувати файли в Unix:
$ mv ~/folder/subfolder/file.txt ~/folder/subfolder/file.sh
^-------this part------^ ^------this part-------^
Повторити це потрібно занадто багато часу ~/folder/subfolder/file.
Чи є швидший шлях?
Відповіді:
Якщо ваша оболонка підтримується Brace розширення (працює з csh, tcsh, ksh, zsh, bash, mksh, lksh, pdksh, yashз дужкою розширюється включена по телефону yash --brace-expandабо встановити в Interative оболонки з set -o brace-expandабо fish):
mv ~/folder/subfolder/file.{txt,sh}
rename.
rename, що це краще рішення, тому що renameніколи не вимагайте від вас змінити існуючий файл чи ні.
Ви також можете використовувати rename(частина пакету util-linux).
rename .txt .sh ~/folder/subfolder/file.txt
Докладніше див. На сторінці перейменування людини .
{a,b}функціональність оболонок .
rename- це зовсім інша програма, заснована на perl. Там ви б скористалися rename 's/txt$/sh/' ~/folder/subfolder/file.txt.
mmv.
Все вищезазначене добре. Це також працює:
( cd ~/folder/subfolder && mv file.txt file.sh )
sudoдеталь.
sudo?
sudoвін інтерпретує ~як домашній каталог кореня.
sudomvcdsudo(
Ні. Вам потрібно дати повний шлях до файлу, щоб перейменувати його. Єдиною альтернативою є переміщення в цільову папку перед запуском mv:
cd ~/folder/subfolder/
mv file.txt file.sh
Крім того, ви можете написати невелику функцію, яка перейменовує файл у цільовий каталог. Наприклад, додайте ці рядки до файлу ініціалізації оболонки ( ~/.bashrcякщо ви використовуєте bash):
lmv(){
_path=$(dirname -- "$1")
_target="${_path%/}/$2"
mv -- "$1" "$_target"
}
Потім відкрийте новий термінал або просто запустіть, source ~/.bashrcщоб перечитати файл init, і ви можете зробити:
lmv ~/folder/subfolder/file.txt file.sh
lmv()функції. Я цього не знав :)
Просто для розширення корисності відповіді cuonglm (НЕ брати жодної заслуги, як я люблю його рішення), і його відповідь є правильною.
Випадок використання полягає в тому, що ми часто хочемо перенести файл у віддалене місце (справжня проблема), наприклад /folder/subfolder/configFile.dat TO configFile.dat.orig
Ця форма команди додає розширення файлу (не замінюючи початкове розширення)
mv ~/folder/subfolder/file.txt{,.orig}
Пояснено: "{, .orig}" означає заміну (нічого) в кінці імені файлу на (щось) ".orig"
АБО вилучити розширення файлу (змінити перейменування)
mv ~/folder/subfolder/file.txt{.orig,}
Примітка. Ще на тему "Найшвидший спосіб перейменувати файли без повторного введення шляху dir"
Так. Якщо ви використовуєте 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)тому що запуск в допоміжній оболонці подбає про зміни каталогу автоматично.