Используйте pwd
для поиска из любого каталога, в котором вы находитесь, рекурсия вниз
grep -rnw `pwd` -e "pattern"
Обновление. В зависимости от используемой вами версии grep вы можете опустить pwd
. В более новых версиях .
, по-видимому, является аргументом по умолчанию для grep, если каталог не указан таким образом:
grep -rnw -e "pattern"
или
grep -rnw "pattern"
будет делать то же, что и выше!
Многие трюки работают, но запрос Ajax разделяет имя файла на 19 символов? Посмотрите на выход запроса ajax, чтобы увидеть это:
Имя файла в порядке, чтобы перейти в атрибут href, но $(this).attr("href")
использует текст имени <a href='full/file/name' >
Split file </a>
Таким образом, $(data).find("a:contains(.jpg)")
не может обнаружить расширение.
Надеюсь, это полезно
Нет, вы не можете сделать это, используя только Javascript. Клиентский Javascript не может прочитать содержимое каталога так, как я думаю, вы спрашиваете.
Однако, если вы можете добавить индексную страницу (или настроить веб-сервер, чтобы показать index page) каталога изображений, и вы обслуживаете Javascript с того же сервера, тогда вы можете сделать вызов AJAX для извлечения индекса и затем проанализировать его.
ie
1 ) Включить индексы в Apache для соответствующего каталога на вашем сайте :
http://www.cyberciti.biz/faq/enabling-apache-file-directory-indexing/
2) Затем выберите / проанализируйте его с помощью jQuery. Вам нужно будет решить, как лучше очистить страницу, и почти наверняка более эффективный способ получения всего списка, но пример:
$.ajax({
url: "http://yoursite.com/images/",
success: function(data){
$(data).find("td > a").each(function(){
// will loop through
alert("Found a file: " + $(this).attr("href"));
});
}
});
Нет. JavaScript - это клиентская технология и не может ничего делать на сервере. Однако вы можете использовать AJAX для вызова сценария на стороне сервера (например, PHP), который может вернуть необходимую вам информацию.
Если вы хотите использовать AJAX, самым простым способом будет использование jQuery:
$.post("someScript.php", function(data) {
console.log(data); //"data" contains whatever someScript.php returned
});
Это отобразит все jpg
файлы в папке, которую вы определяете под URL-адресом: и добавьте их в div
в качестве абзаца. Это можно сделать и с ul li
.
$.ajax({
url: "YOUR FOLDER",
success: function(data){
$(data).find("a:contains(.jpg)").each(function(){
// will loop through
var images = $(this).attr("href");
$('<p></p>').html(images).appendTo('a div of your choice')
});
}
});
ИМХО, идея Эдискана Адиля Ата на самом деле является самым правильным способом. Он извлекает URL-адреса якорных тегов и помещает их в другой тег. И если вы не хотите, чтобы якоря видели посетитель страницы, а затем только .hide()
все они с JQuery или display: none;
в CSS.
Также вы можете выполнить предварительную выборку, например:
<link rel="prefetch" href="imagefolder/clouds.jpg" />
Таким образом, вам не нужно скрывать ее и по-прежнему можно извлечь путь к изображению.
Хотя вы можете запускать команды FTP с помощью WebSockets, более простое решение заключается в перечислении ваших файлов с помощью opendir
на стороне сервера (PHP
) и «выплескивании» его в исходный код HTML, поэтому он будет доступен для клиентская сторона.
Следующий код будет делать именно это,
Необязательно -
<a>
для представления ссылки. PHP
), например размер файла, PHP filesize TIP : & nbsp; вы также можете легко преодолеть ограничение на 2 ГБ файлового архива PHP, используя: AJAX + HEAD запрос + .htaccess правило, чтобы разрешить доступ Content-Length
с клиентской стороны.
download.eladkarako.com
<?php
/* taken from: https://github.com/eladkarako/download.eladkarako.com */
$path = 'resources';
$files = [];
$handle = @opendir('./' . $path . '/');
while ($file = @readdir($handle))
("." !== $file && ".." !== $file) && array_push($files, $file);
@closedir($handle);
sort($files); //uksort($files, "strnatcasecmp");
$files = json_encode($files);
unset($handle,$ext,$file,$path);
?>
<!DOCTYPE html>
<html lang="en-US" dir="ltr">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<div data-container></div>
<script>
/* you will see (for example): 'var files = ["1.bat","1.exe","1.txt"];' if your folder containes those 1.bat 1.exe 1.txt files, it will be sorted too! :) */
var files = <?php echo $files; ?>;
files = files.map(function(file){
return '<a data-ext="##EXT##" download="##FILE##" href="http://download.eladkarako.com/resources/##FILE##">##FILE##</a>'
.replace(/##FILE##/g, file)
.replace(/##EXT##/g, file.split('.').slice(-1) )
;
}).join("\n<br/>\n");
document.querySelector('[data-container]').innerHTML = files;
</script>
</body>
</html>
Результат DOM будет выглядят так:
<html lang="en-US" dir="ltr"><head>
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<div data-container="">
<a data-ext="bat" download="1.bat" href="http://download.eladkarako.com/resources/1.bat">1.bat</a>
<br/>
<a data-ext="exe" download="1.exe" href="http://download.eladkarako.com/resources/1.exe">1.exe</a>
<br/>
<a data-ext="txt" download="1.txt" href="http://download.eladkarako.com/resources/1.txt">1.txt</a>
<br/>
</div>
<script>
var files = ["1.bat","1.exe","1.txt"];
files = files.map(function(file){
return '<a data-ext="##EXT##" download="##FILE##" href="http://download.eladkarako.com/resources/##FILE##">##FILE##</a>'
.replace(/##FILE##/g, file)
.replace(/##EXT##/g, file.split('.').slice(-1) )
;
}).join("\n<br/>\n");
document.querySelector('[data-container').innerHTML = files;
</script>
</body></html>