2

Мне было интересно, есть ли другой способ переименования файла, кроме использования mv в Linux?

Например, изменив /home/usr/blah.txt на что-то вроде -home-usr-blah.txt

4 ответа4

6

Это говорит о том, что вам нужно подумать о том, как вы задаете вопрос. Все, включая меня, сначала неправильно поняли ваш вопрос

Вы можете использовать qmv для массового переименования в интерактивном режиме с помощью редактора. Это позволит искать / заменять, а также циклические переименования.


просто

То, что на самом деле выполняет mv на уровне драйвера, близко к этому:

ln source target
unlink source

Итак, вы можете сделать это. Это, однако, предполагает оптимизированный сценарий, когда источник и цель находятся в одной файловой системе. Если нет, вам придется использовать cp вместо ln. Обязательно сделайте так, чтобы cp -a

Обновление в ответ на (параноидальный) комментарий:

(ln source target || cp -a source target) && unlink source

3

также жесткие ссылки могут быть использованы для переименования файлов

[ 22:16:50 ~/Desktop ] $ echo 'hello' > myfile
[ 22:16:52 ~/Desktop ] $ ln myfile mynewfile
[ 22:17:04 ~/Desktop ] $ rm myfile
remove myfile? y
[ 22:17:11 ~/Desktop ] $ cat mynewfile
hello
[ 22:17:15 ~/Desktop ] $
2

Ну, есть rename

Но если вы хотите переименовать полный путь в одно имя файла, вам нужно использовать другие инструменты, такие как sed или awk .

2

Вы можете использовать функцию "переименовать" в различных инструментах управления файлами, таких как Midnight Commander, чтобы сделать это, или вы можете использовать функцию rename() из скрипта Perl (или эквивалентные функции с другими языками программирования / сценариев).

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