Как определить все поврежденные файлы образов программ, не запуская их один за другим?

Только zsh имеет области, в которых вы можете выбирать файлы по типу, поэтому, предполагая, что GNU make , вам понадобится что-то вроде:

SHELL = zsh
.SHELLFLAGS = -o extendedglob -c

test:
        echo ^GNUmakefile(^/)

^ GNUmakefile extendedglob ) предназначен для нескрытых файлов, кроме GNUmakefile . (^ /) - квалификатор glob , который выбирает файлы любого типа, кроме каталога. См. Также (.) для файлов типа обычный (за исключением каталогов и всех других нестандартных типов файлов, таких как FIFO, символические ссылки, сокеты ...), которые больше похожи на то, что вы ищем. Добавьте квалификатор glob D ( ^ GNUmakefile (.D) ), чтобы включить скрытые ( D ot) файлы, такие как .gitignore .

Обратите внимание, что * [^ GNUmakefile *] расширяется до списка имен нескрытых файлов, которые заканчиваются символом, отличным от G , N , U , m , a , k , e , f , ] i , l или * . Таким образом, он действительно исключит GNUmakefile (поскольку он заканчивается на e ), но также foo.a или file.html или ] bar.exe .

Чтобы сделать то же самое без изменения оболочки, вам нужно прибегнуть к циклу вроде (здесь эквивалент ^ GNUmakefile (.) ):

test:
        set -- *; \
        for i do \
          [ -f "$$i" ] && \
            [ ! -L "$$i" ] && \
            [ "$$i" != GNUmakefile ] && \
            set -- "$$@" "$$i"; \
          shift; \
        done; \
        [ "$$#" -gt 0 ] && echo "$$@"

(replace set - * с установленным -. * * для включения скрытых файлов).

Лучше всего было бы прибегнуть к find вместо команд оболочки, если вы не можете гарантировать доступность zsh :

test:
        find . ! -name . -prune ! -name '.*' ! -name GNUmakefile \
          -type f -exec echo {} +
        find TestData/. ! -name . -prune -name '*.dat' ! -name '.*' \
          -type f -exec echo {} +

(remove ! -Name ' . * ' для включения скрытых файлов).

1
31.03.2018, 22:34
1 ответ

Использование touch -a /usr/bin/*приведет к появлению списка только Input/output errorимен файлов в stderr.

0
28.01.2020, 00:37

Теги

Похожие вопросы