Как поменять местами имена двух файлов в командной строке?

Я работаю в bash под Ubuntu 10.04 на данный момент, но решение было бы интересно и в других средах (например, Windows cmd.исполняемый.) Обычно я переименовываю первый файл с временным именем, переименовываю второй файл с первым именем и, наконец, переименовываю временный файл со вторым именем. Есть ли идиома или программа для этого за один шаг?

пример (bash):

$ mv file1 tmp; mv file2 file1; mv tmp file2
30
задан Judge Maygarden
02.05.2023 19:48 Количество просмотров материала 3687
Распечатать страницу

2 ответа

Я создал скрипт оболочки ниже, чтобы выполнить эту задачу, но мне все еще любопытно, есть ли уже доступные стандартные методы.

#!/bin/sh
tmp=`mktemp`
mv  $tmp
mv  
mv $tmp 

Я назвал его swap, сделал его исполняемым и поместил в мой путь. Это позволяет использовать следующий синтаксис.

swap file1 file2
5
отвечен Judge Maygarden 2023-05-04 03:36

попробуй:

$ mv old_file tmp_file && mv current_file old_file && mv tmp_file current_file

Как видно на SO https://stackoverflow.com/a/1115909/1478950

безопаснее, так как вы не потеряете файлы, если исходное mv не удается.

0
отвечен todgru 2023-05-04 05:53

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

Ваш ответ

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

Имя
Вверх