В Linux я иногда переименовываю файлы следующим образом:
mv dir1/dir2/dir3/file.txt dir1/dir2/dir3/file.txt.old
Обратите внимание, что я хочу просто переименовать файл, а не переместить его в другой каталог.
Есть ли команда, которая позволила бы мне сделать сокращенную версию этой команды? Я думаю что-то вроде:
mv dir1/dir2/dir3/file.txt file.txt.old
или даже что-то вроде (просто добавить к имени):
mv dir1/dir2/dir3/file.txt {}.old
Моя цель не состоит в том, чтобы снова указывать полный путь.
Я знаю, что те «примеры», которые я написал, не работают, но это просто идея того, чего я хочу достичь.
Я не хочу заходить в каталог.
(cd dir1/dir2/dir3 && exec mv file.txt{,.old})
имеет практически ту же производительность, что и код без подпроцесса, поскольку он exec
позволяет избежать fork()
вызова во время внешнего вызова команды, поэтому в любом случае вы получаете ровно один форк.