function assignFilePreviews() {
$( 'input[data-previewable=\"true\"]' ).change(function() {
var prvCnt = $(this).attr('data-preview-container');
if(prvCnt) {
if (this.files && this.files[0]) {
var reader = new FileReader();
reader.onload = function (e) {
var img = $('<img>');
img.attr('src', e.target.result);
img.error(function() {
$(prvCnt).html('');
});
$(prvCnt).html('');
img.appendTo(prvCnt);
}
reader.readAsDataURL(this.files[0]);
}
}
});
}
$(document).ready(function() {
assignFilePreviews();
});
HTML
<input type="file" data-previewable="true" data-preview-container=".prd-img-prv" />
<div class = "prd-img-prv"></div>
Это также обрабатывает случай, когда выбран файл с недопустимым типом (например, pdf)
хороший прием для предотвращения печати сокращенных каталогов должен использовать -print
(работы для -exec
также) после правой стороны -or
после -prune
. Например...
find . -path "*/.*" -prune -or -iname "*.j2"
распечатает путь всех файлов под текущим каталогом с '.j2" расширение, пропуская все скрытые каталоги. Аккуратный. Но это также распечатает печать полный путь каждого каталога, который каждый пропускает, как отмечено выше. Однако следующее не делает...
find . -path "*/.*" -prune -or -iname "*.j2" -print
, потому что логически существует скрытое -and
после -iname
оператор и перед - печать. Это связывает его с правильной частью -or
пункт из-за булева порядка операций и ассоциативности. Но в документах говорится, что существует скрытое -print
если это (или любой из его кузенов... -print0
, и т.д.), не определяется. Итак, почему левая часть не имеет -or
печать? По-видимому (и я не понял это от своего первого чтения страница справочника), который верен если там нет никакого -print
- или -exec
ГДЕ УГОДНО, в этом случае, - печать логически опрыснута вокруг таким образом, что все печатается. Если даже ОДИН print
- операция стиля выражается в каком-либо пункте, все те скрытые логические единицы уходят, и Вы получаете только, что Вы определяете. Теперь откровенно говоря, я, возможно, предпочел, чтобы это наоборот, но тогда find
только с описательными операторами ничего, по-видимому, не делало, таким образом, я предположу, что это имеет смысл как есть. Как упомянуто выше, это все работает с [1 118] также, таким образом, следующее дает полное ls -la
список для каждого файла с требуемым внутренним абонентом, но не список первого уровня каждого скрытого каталога...
find . -path "*/.*" -prune -or -iname "*.j2" -exec ls -la -- {} +
Для меня (и другие на этом потоке), find
синтаксис становится довольно барочным довольно быстро, таким образом, я всегда добавляю parens, чтобы удостовериться, что я знаю то, что связывает с тем, что, таким образом, я обычно создаю макрос для способности типа и формирую все такие операторы как...
find . \( \( ... description of stuff to avoid ... \) -prune \) -or \
\( ... description of stuff I want to find ... [ -exec or -print] \)
трудно пойти не так, как надо путем установки мира в две части этот путь. Я надеюсь, что это помогает, хотя это кажется маловероятным для любого для чтения вниз в 30+th, отвечают и проголосовать за него, но можно надеяться.:-)
Вместо:
for file in $(find . -name '*.js')
do
java -jar config/yuicompressor-2.4.2.jar --type js $file -o $file
done
... и так как Вы не определяете, какой подкаталог Вы хотите исключить, Вы могли использовать:
for file in $(find *.js -maxdepth 0 -name '*.js')
do
java -jar config/yuicompressor-2.4.2.jar --type js $file -o $file
done
Этот синтаксис исключит все подкаталоги.
Смотрят на пример ниже: в соответствии с моим tmp каталогом у меня есть огромный подкаталог "архива", который содержит 17000-4640=12360 файлы. И этот каталог расположен на медленном NFS. В то время как 1-й синтаксис сканирует подкаталог "архива" и работает плохо, 2-й синтаксис только сканирует "*pdf" файлы, содержавшиеся в моем текущем dir, и работает... не настолько плохо.
[tmp]$ time (find . -name "*pdf" | wc -l)
17000
real 0m40.479s
user 0m0.423s
sys 0m5.606s
[tmp]$ time (find *pdf -maxdepth 0 -name "*pdf" | wc -l)
4640
real 0m7.778s
user 0m0.113s
sys 0m1.136s
, Что 2-й синтаксис довольно интересен: в следующем примере я хочу проверить, существует ли файл or60runm50958.pdf и составляет больше чем 20 старых минут. Лично убедитесь, как 2-й синтаксис более эффективен. Это вызвано тем, что это старается не сканировать подкаталог архива.
[tmp]$ time find . -name or60runm50958.pdf -mmin +20
./or60runm50958.pdf
real 0m51.145s
user 0m0.529s
sys 0m6.243s
[tmp]$ time find or60runm50958.pdf -maxdepth 0 -name or60runm50958.pdf -mmin +20
or60runm50958.pdf
real 0m0.004s
user 0m0.000s
sys 0m0.002s