Вы хотите, чтобы все Ваши фотографии были 6x4 с шириной 1 024, правильно? Это означает, что они должны быть 683 пикселя высотой.
Если это корректно, что Вы ищете...
convert <input_image> -resize 1024x683^ -gravity center -extent 1024x683 <output_image>
... где Вы заменили бы именем файла изображения, Вы хотите изменить размер, и с новым именем файла.
Это обрежет края, чтобы соответствовать аспекту и изменить размер их к 1024x683. Это сделает маленькие изображения больше, а также создание больших изображений меньший для установки размеру.
Когда Вы захотите изменить размер всех изображений в каталоге, необходимо будет записать быстрый сценарий удара, который был бы похож...
#!/bin/bash
for f in *.[jJ][pP][gG]
do
echo $f
convert $f -resize 1024x683^ -gravity center -extent 1024x683 print_$f
done
Вы затем просто делаете исполняемый файл сценария. (Скажите сохранение сценария как rename.sh Вы работаете chmod u+x rename.sh
.) Затем Вы запускаете скрипт ./rename.sh
который изменит размер всех изображений в том же каталоге.
Это - действительно задание для zsh.
vim my_dir/*(om[1])
Биты в круглых скобках являются спецификаторами шарика. *
прежде регулярный шаблон шарика, например, если бы Вы хотели рассмотреть только файлы журнала, то Вы могли бы использовать *.log
. o
спецификатор шарика изменяет порядок, в котором отсортированы соответствия; om
вид средств ко времени изменения, новому сначала. [
спецификатор шарика означает только возвращать некоторые соответствия: [1]
возвращает первое соответствие, [2,4]
возвратите следующие три, [-2,-1]
возвратите последние два и так далее. Если файлы имеют имена, которые начинаются с их метки времени, *([1])
будет достаточен.
В других оболочках нет никакого хорошего способа выбрать новый файл. Если Ваши имена файлов не содержат непечатные символы или новые строки, можно использовать
vim "$(ls -t mydir | head -n 1)"
Если Вы хотите выбрать первый или последний файл на основе имени, существует полностью надежный и портативный метод, который является немного подробным для командной строки, но совершенно пригодным к эксплуатации в сценариях.
set -- mydir/*
first_file_name=$1
eval "last_file_name=\${$#}"
Это работает на меня:
$ ls -rt | tail -1 | xargs vim
Но у Вас может быть каталог как последняя запись, в этом случае Вы могли бы хотеть отфильтровать каталоги:
$ ls -rt | grep -v "^d" | tail -1 | xargs vim
vim "$(ls -t | head -1)"
– enzotib
09.12.2011, 17:39
Я предполагаю, что Вы ищете это.
[centos@centos temp]$ for i in `seq 100`; do touch $i; done
[centos@centos temp]$ ls -t1 | head -1
100
[centos@centos temp]$ vim /.my_dir/$(ls -t1 | head -1)
Но сортировка зависит полностью от Вашего имени файла.