У меня есть каталог, полный файлов с расширением .xxx. (Apple.xxx
, Orange.xxx
, Bannana.xxx
)
Я хочу изменить их расширения на .yyy. (Apple.yyy
, Orange.yyy
, Bannana.yyy
)
Какой самый быстрый способ сделать это с помощью основных команд оболочки?
Взгляните на команду переименования: rename .xxx .yyy *.xxx
for i in *.xxx; do
mv "$i" "${i%.*}.yyy"
done
Знак процента в "$ {i%. *}" Означает использование шарик шаблон, который стоит после знака процента, примените его к значению переменной i и удалите самое короткое возможное совпадение из хвоста этого значения. Это называется расширением параметров / переменных и имеет множество применений. Вы также можете сделать так, чтобы глобус совпадал как можно дольше, или сделать так, чтобы глобус совпадал с самого начала. Эта статья в Linux Journal все о расширении параметров.
Он заключен в двойные кавычки, поэтому, если в имени файла есть пробелы и переменная IFS установлена на включение пробелов (норма), имя файла все равно будет передано в mv как один аргумент.
Установить ммв а затем сделайте это:
mmv -r "*.xxx" "#1.yyy"
Уже куча ответов, но добавлю свой.
for i in *.xxx; do
mv "$i" "`basename $i .xxx`.yyy"
done