Как переименовать файл внутри папки с помощью команды оболочки?

у меня есть файл в some/long/path/to/file/myfiel.txt.

Я хочу переименовать его в some/long/path/to/file/myfile.txt.

В настоящее время я делаю это путем mv some/long/path/to/file/myfiel.txt some/long/path/to/file/myfile.txt, но ввод пути дважды не очень эффективен (даже с завершением табуляции).

как я могу сделать это быстрее? (Я думаю, что могу написать функцию, чтобы изменить только сегмент имени файла, но это план B).

26
задан Canadian Luke
02.01.2023 11:32 Количество просмотров материала 3002
Распечатать страницу

4 ответа

чтобы сделать это в одной команде, вы можете просто сделать это:

mv some/long/path/to/file/{myfiel.txt,myfile.txt}

, который является примером для полное имя файла, учитывая, что это опечатка вы можете сделать что-то вроде:

mv some/long/path/to/file/myfi{el,le}.txt

оба расширятся до полной команды, они называются бандаж разложений. Они поддерживается zsh.

11
отвечен Tom Wijsman 2023-01-03 19:20

вот несколько вариантов:

перейти в каталог:

cd /home/long/path
mv file1 file2
cd -

изменение каталогов с помощью стека каталогов:

pushd /some/long/path
mv file1 file2
popd

переход в каталог с помощью подоболочки:

( 
  cd /some/long/path
  mv file1 file2
)   # no need to change back

использовать расширение скобки:

mv /some/long/path/{file1,file2}

использовать переменную:

D=/some/long/path
mv "$D/file1" "$D/file2"
5
отвечен tylerl 2023-01-03 21:37

перейдите в каталог, переместите файл и вернитесь в предыдущий каталог; вот так:

cd some/long/path/to/file
mv myfiel.txt myfile.txt
cd -
3
отвечен Yedric 2023-01-03 23:54

когда я использую метод subshell, я бы хотел сделать это на одной строке, как so

(cd /some/long/path ; mv myfiel myfile )
1
отвечен Keith Wolters 2023-01-04 02:11

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх