LINUX.ORG.RU

Как получить количество файлов?


0

2

Есть директория, в которой большое количество файлов.

2 вопроса:

Можно ли как-нибудь получить количество файлов? ls -f | wc -l на данный момент работает уже порядка 10 минут - результата пока нет

Можно ли как-нибудь получить первый файл оттуда? ls -f | head -1 соответственно тоже не возвращает результат.



Последнее исправление: aiive (всего исправлений: 1)

Каталог - это тоже файл. Открой его текстовым редактором или сделай cat, оттуда можно будет выцепить имя первого файла, да.

Frakhtan-teh ★★
()
Ответ на: комментарий от ados

Безрезультатно. При попытке перейти в директорию оно начинает думать и все.

aiive
() автор топика
Ответ на: комментарий от Frakhtan-teh

cat не делается, ругается на то, что это директория. vim открывать её саму по себе тоже не хочет.

aiive
() автор топика

find ./path должен сразу выводить пути

mashina ★★★★★
()
Ответ на: комментарий от Frakhtan-teh

> Открой его текстовым редактором или сделай cat

Подскажи, как.

anonymous
()

Итак, пока итоги такие.

Шаманства с ls, find, cat и т.д. никаких результатов не принесли.

Первый файл можно получить так, но хотелось бы узнать, как это сделать без пхп.

$dir = opendir('./');
echo $readdir($name);
aiive
() автор топика
Ответ на: комментарий от aiive

точнее вот так

$dir = opendir('./');
echo readdir($dir);

aiive
() автор топика

можно поинтересоваться, что такое «первый файл»?

thesis ★★★★★
()
Ответ на: комментарий от geekless
desktop linux-2.6.37 # find -maxdepth 1 -type f | wc -l
20
desktop linux-2.6.37 # ls -1p | grep -v / | wc -l
12
desktop linux-2.6.37 # ls -1p 
arch/
block/
COPYING
CREDITS
crypto/
Documentation/
drivers/
firmware/
fs/
include/
init/
ipc/
Kbuild
Kconfig
kernel/
lib/
MAINTAINERS
Makefile
mm/
modules.builtin
modules.order
Module.symvers
net/
README
REPORTING-BUGS
samples/
scripts/
security/
sound/
tools/
usr/
virt/
vmlinux.o
desktop linux-2.6.37 # find -maxdepth 0 -type f | wc -l
0
desktop linux-2.6.37 #

ЧЯДНТ?

megabaks ★★★★
()
Ответ на: комментарий от geekless

Не читаешь вопрос. И используешь ls и find в директории, где всего 129 файлов. У меня же сложность в том, что этих файлов много. Очень много. В результате может эти конструкции и будут работать, но за 20 минут явно ответ не выдадут. Я проверял.

aiive
() автор топика
Ответ на: комментарий от aiive

Я отвечал про лишний и бесполезный grep.

А по теме тебе поможет простейшая программа на Си, делающая в цикле readdir. Либо смотри в сторону seekdir и telldir, но не уверен, ибо не юзал.

geekless ★★
()

Что значит «первый файл»? Порядок сортировки может быть разным.
Если в системе установлен gcc, то вот так:

echo -e '#include <dirent.h>\n#include <stdio.h>\nvoid main(){struct dirent **l;printf("%s %d\\n",l[3]->d_name,scandir(".",&l,0,alphasort));}'|gcc -xc -;./a.out
напечатает «первый» файл\директорию, и число файлов\директорий в текущем каталоге. Код плохой, и может обидеть маленьких детей и животных.

anon_666
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.