Добавьте этот код в свой файл css3
** Remove the header from the dataTable**/
.ui-datatable.borderless thead {
display: none;
}
/** Remove the border from the dataTable **/
.ui-datatable.borderless tbody,
.ui-datatable.borderless tbody tr,
.ui-datatable.borderless tbody td {
border-style: none;
}
Затем вызовите этот код из файла xhtml следующим образом:
<p:dataTable styleClass="borderless">
Если вы просто пытаетесь выполнить свою программу data
для группы файлов, самый простой / наименее сложный способ - использовать -exec
в найти
.
Допустим, вы хотите выполнить data
для всех текстовых файлов в текущем каталоге (и подкаталогах). Это все, что вам нужно:
find . -name "*.txt" -exec data {} \;
Если вы хотите ограничить его текущим каталогом, вы можете сделать это:
find . -maxdepth 1 -name "*.txt" -exec data {} \;
Есть много вариантов с find
.
Вы можете создать сценарий оболочки следующим образом:
#!/bin/bash
cd /path/to/your/dir
for file in `dir -d *` ; do
./data "$file"
done
Он просматривает каждый файл в / path / to / your / dir и запускает на нем ваш сценарий "data". Обязательно выполните chmod приведенный выше сценарий, чтобы он стал исполняемым.
ls
не обрабатывает пробелы, переводы строки и другие неприятные вещи в именах файлов, и ее следует по возможности избегать.
find
полезен только в том случае, если вы хотите погрузиться в подкаталоги или если вы хотите использовать другие параметры (mtime, size, вы называете это).
Но многие команды обрабатывают несколько файлов самостоятельно, поэтому цикл for не нужен:
for d in * ; do du -s $d; done
но
du -s *
md5sum e*
identify *jpg
grep bash ../*.sh
Вам следует избегать синтаксического анализа ls
:
find . -maxdepth 1 | while read -r file; do do_something_with "$file"; done
или
while read -r file; do do_something_with "$file"; done < <(find . -maxdepth 1)
Последний не создает подоболочку из цикла while.
Распространенные методы:
ls * | while read file; do data "$file"; done
for file in *; do data "$file"; done
Второй может вызвать проблемы, если у вас есть пробелы в именах файлов; в этом случае вы, вероятно, захотите убедиться, что он работает в подоболочке, и установите IFS:
( IFS=$'\n'; for file in *; do data "$file"; done )
Вы можете легко обернуть первый сценарий в сценарий:
#!/bin/bash
# map.bash
while read file; do
"$1" "$file"
done
, который может быть выполнен по вашему запросу - просто будьте осторожны никогда случайно не выполнить с ним ничего глупого. Преимущество использования циклической конструкции заключается в том, что вы можете легко разместить внутри нее несколько команд как часть однострочника, в отличие от xargs, где вам придется поместить их в исполняемый скрипт для его запуска.
Конечно, вы также можете просто использовать утилиту xargs
:
find -maxdepth 0 * | xargs -n 1 data
Обратите внимание, что вы должны убедиться, что индикаторы выключены ( ls --indicator-style = none
) если вы обычно их используете, либо @
, добавленное к символическим ссылкам, превратит их в несуществующие имена файлов.
Похоже, вы хотите xargs
:
find . --maxdepth 1 | xargs -d'\n' data
Чтобы сначала вывести каждую команду, это становится немного сложнее:
find . --maxdepth 1 | xargs -d'\n' -I {} bash -c "echo {}; data {}"
Если вы просто хотите выполнить команду для каждого файла, вы можете сделать следующее:
for i in *; do data "$i"; done
Если вы также хотите отобразить имя файла, над которым он в данный момент работает, вы можете использовать следующее:
for i in *; do echo -n "$i: "; data "$i"; done
Попробуйте так:
for i in *; do echo ${i}: `data $i`; done
Поскольку вы специально спросили об этом Что касается "карты", я подумал, что поделюсь этой функцией в моей личной библиотеке оболочки:
# map_lines: evaluate a command for each line of input
map_lines()
{
while read line ; do
$1 $line
done
}
Я использую ее так же, как вы для решения:
$ ls | map_lines ./data
Я назвал ее map_lines вместо map, как я Предполагается, что когда-нибудь я смогу реализовать map_args там, где вы будете использовать его следующим образом:
$ map_args ./data *
Эта функция будет выглядеть так:
map_args()
{
cmd="$1" ; shift
for arg ; do
$cmd "$arg"
done
}