6

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

Пример (bash):

$ mv file1 tmp; mv file2 file1; mv tmp file2

2 ответа2

5

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

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

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

swap file1 file2
0

Пытаться:

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

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

Безопаснее, так как вы не потеряете файлы, если начальный сбой mv .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .