Należy pamiętać, że ŻADNY system plików Linux lub Unix nie używa „rozszerzeń” w stylu Windows lub VMS - to tylko konwencja, że przyrostek nazwy pliku to „.tif” lub „.c” lub „.o” lub „.so " lub cokolwiek.
Bruce Ediger,
W porządku ... Importuję pliki z systemu Windows do systemu Linux :)
Paul
1
Technicznie rzecz biorąc, system Windows również nie używa rozszerzeń plików, po prostu menedżer plików systemu Windows 95 używał ostatnich znaków nazwy pliku do określenia typu pliku po zerwaniu ze schematem nazewnictwa MS-DOS i od tego czasu konwencja pozostała.
RAKK
Odpowiedzi:
24
perl„y rename(jak zwykle znajduje się na Debianie gdzie również nazywana prename) lub tej pochodnej ( renameopakowania na Debianie)
rename 's/\.tif$//' *.tif
util-linuxrename(jak zwykle można znaleźć w Red Hat rename.ulna Debianie):
rename -- .tif '' *.tif
(zwróć uwagę, że ta nazwa zmieniłaby się blah.tiffany.tifna blahfany.tif)
Uważam, że nazwa „Debian” pochodzi od Larry'ego Walla (pochodzi z Perla?), A nazwa „Red Hat” pochodzi od util-linux (rename.ul w Debian IIRC).
XTL
@XTL: Prawda. Nazywam je tak, ponieważ są to programy „zmieniające nazwy” znajdujące się w pochodnych Debiana lub Red Hata.
Ignacio Vazquez-Abrams,
Dzięki wielkie! Nigdy nie zdawałem sobie sprawy, że istnieją różne wersje „zmiany nazwy”. Zakładam, że istnieją inne subtelne różnice między poleceniami w debian i redhat. Będę musiał sprawdzić niektóre z ich różnic.
Paul
Drugie polecenie spowodowało niepoprawną składnię, ale pierwsze zadziałało.
HelloWorld,
6
Aby zmienić nazwę, możesz:
$ for i in *.tif; do mv -i $i `basename $i .tif`; done
Zakłada się, że implementacja util-linux renamejest niezgodna (i znacznie bardziej ograniczona) od tradycyjnego renamepolecenia z perl.
Stéphane Chazelas
Zauważ też, że zastępuje ono pierwsze wystąpienie .oldextw nazwie pliku, niekoniecznie rozszerzenie ( foo.oldextasy.oldextzostanie zmienione na footasy.oldext).
Stéphane Chazelas
1
Jeśli używasz systemu IBM AIX, nie będziesz mieć renamekomendy, więc aby grupowo usunąć rozszerzenia plików, musisz użyć zwykłych waniliowych komend systemu UNIX w wersji V:
for file in *.tif; do
mv $file `echo $file | sed 's/.tif$//'`;
done;
Odpowiedzi:
perl
„yrename
(jak zwykle znajduje się na Debianie gdzie również nazywanaprename
) lub tej pochodnej (rename
opakowania na Debianie)util-linux
rename
(jak zwykle można znaleźć w Red Hatrename.ul
na Debianie):(zwróć uwagę, że ta nazwa zmieniłaby się
blah.tiffany.tif
nablahfany.tif
)źródło
Aby zmienić nazwę, możesz:
(-i, aby ostrzec przed zamianą pliku)
źródło
for i in ./*.tif; do mv -i "$i" "${i%.tif}"; done
Zastępuje to stare rozszerzenie nowym. Aby po prostu usunąć rozszerzenie, możesz jawnie przekazać pusty ciąg znaków jako argument.
Za pomocą powyższego polecenia wszystkie pliki z
.gz.tmp
rozszerzeniem w bieżącym folderze zostaną zmienione nafilename.gz
.Szczegółowe informacje można znaleźć w artykule: Linux: usuń rozszerzenia plików dla wielu plików .
źródło
rename
jest niezgodna (i znacznie bardziej ograniczona) od tradycyjnegorename
polecenia zperl
..oldext
w nazwie pliku, niekoniecznie rozszerzenie (foo.oldextasy.oldext
zostanie zmienione nafootasy.oldext
).Jeśli używasz systemu IBM AIX, nie będziesz mieć
rename
komendy, więc aby grupowo usunąć rozszerzenia plików, musisz użyć zwykłych waniliowych komend systemu UNIX w wersji V:źródło
czy możemy to zrobić rekurencyjnie?
źródło