Имейте в виду, что НИКАКАЯ файловая система Linux или Unix не использует «расширения» в стиле Windows или VMS - только условно суффикс имени файла - «.tif», «.c», «.o» или «.so». "или что угодно.
Брюс Эдигер
Это нормально ... Я импортирую файлы из Windows в Linux :)
Paul
1
Технически говоря, Windows также не использует расширения файлов, просто файловый менеджер Windows 95 продолжал использовать последние символы имени файла для определения типа файла после выхода из схемы именования MS-DOS, и с тех пор соглашение осталось.
РАКК
Ответы:
24
perl«s rename(как правило , найти на Debian , где он также называется prename), или этой производной ( renameпакет на Debian):
rename 's/\.tif$//' *.tif
util-linuxrename(как обычно в Red Hat, rename.ulв Debian):
rename -- .tif '' *.tif
(обратите внимание, что это можно было бы переименовать blah.tiffany.tifв blahfany.tif)
Я полагаю, что переименование Debian осуществляется Ларри Уоллом (поставляется с Perl?), А переименование Red Hat - из util-linux (rename.ul в Debian IIRC).
XTL
@XTL: правда. Я просто называю их так, потому что это программы «переименования», которые есть в производных Debian или Red Hat.
Игнасио Васкес-Абрамс
Спасибо! Я так и не понял, что существуют разные версии «переименования». Я предполагаю, что есть другие тонкие различия между командами в debian & redhat. Мне придется искать некоторые из их различий.
Пол
Вторая команда вызвала неверный синтаксис, но первая сработала.
HelloWorld
6
Для не переименования вы можете сделать:
$ for i in *.tif; do mv -i $i `basename $i .tif`; done
Это предполагает, что реализация util-linux renameнесовместима (и намного более ограничена) с традиционной renameкомандой from perl.
Стефан Шазелас
Также обратите внимание, что он заменяет первое вхождение .oldextв имени файла, а не обязательно расширение ( foo.oldextasy.oldextбудет переименовано в footasy.oldext).
Стефан Шазелас
1
Если вы используете IBM AIX, у вас не будет renameкоманды, поэтому для пакетного удаления расширений файлов вам придется использовать простые ванильные команды System V UNIX:
for file in *.tif; do
mv $file `echo $file | sed 's/.tif$//'`;
done;
Ответы:
perl
«srename
(как правило , найти на Debian , где он также называетсяprename
), или этой производной (rename
пакет на Debian):util-linux
rename
(как обычно в Red Hat,rename.ul
в Debian):(обратите внимание, что это можно было бы переименовать
blah.tiffany.tif
вblahfany.tif
)источник
Для не переименования вы можете сделать:
(-и предупредить против замены файла)
источник
for i in ./*.tif; do mv -i "$i" "${i%.tif}"; done
Это заменяет старое расширение новым. Чтобы просто удалить расширение, вы можете явно передать пустую строку в качестве аргумента.
С помощью приведенной выше команды все файлы с
.gz.tmp
расширением в текущей папке будут переименованы вfilename.gz
.Обратитесь к статье: Linux: удалите расширения файлов для нескольких файлов для деталей.
источник
rename
несовместима (и намного более ограничена) с традиционнойrename
командой fromperl
..oldext
в имени файла, а не обязательно расширение (foo.oldextasy.oldext
будет переименовано вfootasy.oldext
).Если вы используете IBM AIX, у вас не будет
rename
команды, поэтому для пакетного удаления расширений файлов вам придется использовать простые ванильные команды System V UNIX:источник
мы можем сделать это рекурсивным
источник