Как другие отметили, если это - динамическое веб-приложение, Вы - очень более обеспеченные функции PHP's использования для доступа к размеру файла.
Но если Вы собираетесь добраться, это путем выполнения команды оболочки, не использовать ls
. Вместо этого используйте stat
, и скажите это точно, что Вы хотите:
$ stat -c '%n %s' x.txt
x.txt 12
Попытка:
grep -- -R *.GNU
--
указывает на конец опций так, чтобы -R
рассматривается как аргумент вместо опции к grep
Изрядное количество инструментов GNU поддерживает опцию, где можно сказать инструмент (rm
, grep
, ls
, и т.д.), что Вы больше не хотите, чтобы это продолжило анализировать для параметров командной строки к себе. Эта опция упрощена путем маркировки входа командной строки с двойным тире --
.
Можно читать больше об этом в GNU CoreUtils FAQ. Конкретно этот раздел, названный: 11, Как я удаляю файлы, которые запускаются с тире.
Это допускает файлы, которые начинаются с тире (т.е. -
) быть переданным как параметры командной строки:
rm ./-stuff
rm /full/path/-stuff
rm -- -stuff
mv ./-stuff differentstuff
mv -- -stuff differentstuff
test
или echo
). Также отметьте это с find
, --
мешает именам файлов быть взятым в качестве опций, но не от того, чтобы быть взятым в качестве предикатов.
– Stéphane Chazelas
26.06.2013, 01:07
coreutils
пакет. Если я выполняю следующую команду под Fedora, rpm -q --whatrequires coreutils -l
Я получаю список всех файлов, которые требуют его, и это - довольно большой блок инструментов GNU от того, что я могу сказать. Спасибо за разъяснение по поводу find
, еще одна вещь я не знал 8-). уверенный
– slm♦
26.06.2013, 03:43
Наиболее распространенные способы
grep -- -R *.GNU
работы с некоторыми вариантами grep. --
говорит grep прекращать искать флаги.
grep -e -R *.GNU
работы также. -e
говорит grep, что шаблон поиска следует.
Альтернативы
grep '[-]R' *.GNU
[-]
класс символов. С тех пор существует только один символ в классе, он должен соответствовать дефису (-
).
grep '.\?-R' *.GNU
Вопросительный знак говорит grep, что символ до него является дополнительным. .
соответствия любой символ.
grep '\(\)-R' *.GNU
Круглая скобка делает пустую группу.
\-
не распознан как расширенный regexp оператор Вашим grep
реализация. Обратная косая черта не выходит -
что касается regexp (ни один -
ни \-
являются особенными, таким образом, обратная косая черта проигнорирована), но потому что теперь первый аргумент grep
не запускается с a -
, это выходит -
в том смысле, что это больше не заставляет аргумент быть взятым в качестве опции. grep '[-]R'
или grep '\(-R\)'
также работал бы. Вам все еще был бы нужен a --
с GNU grep, если некоторые имена файлов могут запуститься с -
.
– Stéphane Chazelas
26.06.2013, 01:22