Mam wiele plików tiff o nazwie:
sw.001.tif
sw.002.tif
...
i chcę usunąć .tif
na końcu każdego z plików. Jak mogę to zrobić za pomocą rename
polecenia?
Mam wiele plików tiff o nazwie:
sw.001.tif
sw.002.tif
...
i chcę usunąć .tif
na końcu każdego z plików. Jak mogę to zrobić za pomocą rename
polecenia?
Odpowiedzi:
perl
„y rename
(jak zwykle znajduje się na Debianie gdzie również nazywana prename
) lub tej pochodnej ( rename
opakowania na Debianie)
rename 's/\.tif$//' *.tif
util-linux
rename
(jak zwykle można znaleźć w Red Hat rename.ul
na Debianie):
rename -- .tif '' *.tif
(zwróć uwagę, że ta nazwa zmieniłaby się blah.tiffany.tif
na blahfany.tif
)
Aby zmienić nazwę, możesz:
$ for i in *.tif; do mv -i $i `basename $i .tif`; done
(-i, aby ostrzec przed zamianą pliku)
for i in ./*.tif; do mv -i "$i" "${i%.tif}"; done
rename -- .oldext .newext *.oldext
Zastępuje to stare rozszerzenie nowym. Aby po prostu usunąć rozszerzenie, możesz jawnie przekazać pusty ciąg znaków jako argument.
rename -- .gz.tmp '' *.gz.tmp
Za pomocą powyższego polecenia wszystkie pliki z .gz.tmp
rozszerzeniem w bieżącym folderze zostaną zmienione na filename.gz
.
Szczegółowe informacje można znaleźć w artykule: Linux: usuń rozszerzenia plików dla wielu plików .
rename
jest niezgodna (i znacznie bardziej ograniczona) od tradycyjnego rename
polecenia z perl
.
.oldext
w nazwie pliku, niekoniecznie rozszerzenie ( foo.oldextasy.oldext
zostanie zmienione na footasy.oldext
).
czy możemy to zrobić rekurencyjnie?
for i in *.gz; do mv -i $i `basename $i .gz`; done