Мне было интересно, есть ли другой способ переименования файла, кроме использования mv
в Linux?
Например, изменив /home/usr/blah.txt
на что-то вроде -home-usr-blah.txt
Это говорит о том, что вам нужно подумать о том, как вы задаете вопрос. Все, включая меня, сначала неправильно поняли ваш вопрос
Вы можете использовать qmv для массового переименования в интерактивном режиме с помощью редактора. Это позволит искать / заменять, а также циклические переименования.
просто
То, что на самом деле выполняет mv на уровне драйвера, близко к этому:
ln source target
unlink source
Итак, вы можете сделать это. Это, однако, предполагает оптимизированный сценарий, когда источник и цель находятся в одной файловой системе. Если нет, вам придется использовать cp вместо ln. Обязательно сделайте так, чтобы cp -a
Обновление в ответ на (параноидальный) комментарий:
(ln source target || cp -a source target) && unlink source
также жесткие ссылки могут быть использованы для переименования файлов
[ 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 ] $
Ну, есть rename
Но если вы хотите переименовать полный путь в одно имя файла, вам нужно использовать другие инструменты, такие как sed
или awk
.
Вы можете использовать функцию "переименовать" в различных инструментах управления файлами, таких как Midnight Commander, чтобы сделать это, или вы можете использовать функцию rename()
из скрипта Perl (или эквивалентные функции с другими языками программирования / сценариев).