W Linuksie czasami zmieniam nazwy plików w ten sposób:
mv dir1/dir2/dir3/file.txt dir1/dir2/dir3/file.txt.old
Zauważ, że chcę po prostu zmienić nazwę pliku, a nie przenieść go do innego katalogu.
Czy istnieje polecenie, które pozwoliłoby mi wykonać skróconą wersję tego polecenia? Mam na myśli coś takiego:
mv dir1/dir2/dir3/file.txt file.txt.old
a może nawet coś takiego (aby po prostu dołączyć do nazwy):
mv dir1/dir2/dir3/file.txt {}.old
Moim celem nie jest ponowne podawanie pełnej ścieżki.
Wiem, że te „przykłady”, które napisałem, nie działają, ale to tylko pomysł na to, co chcę osiągnąć.
Nie chcę wpuszczać cd do katalogu.
(cd dir1/dir2/dir3 && exec mv file.txt{,.old})
ma efektywnie taką samą wydajność jak kod bez podprocesu, ponieważ exec
unika fork()
ingerencji podczas zewnętrznego wywoływania polecenia, więc masz dokładnie jedno rozwidlenie.