Scripting question how to filter list of files based on globs
Philip Prindeville
philipp_subx at redfish-solutions.com
Wed Apr 10 07:45:35 PDT 2024
> On Apr 9, 2024, at 6:03 PM, Paul D <newtwen at gmail.com> wrote:
>
> On 2024-04-09 23:30, Philip Prindeville via openwrt-devel wrote:
>> I'm trying to modify a script generates a list of filenames one per
>> line, but should be filtered against a blacklist of file globs.
>>
>> Something like:
>>
>> % find dir <args> -print | grep -v -f blacklist
>
>
> I got this. When I run it on the openwrt source, where package is the packages directory:
>
> Vanilla Output
>
> find package -type f -print
>
> ===
> ...
> package/utils/uencrypt/src/CMakeLists.txt
> package/utils/uencrypt/src/uencrypt-mbedtls.c
> package/utils/uencrypt/src/uencrypt-openssl.c
> package/utils/uencrypt/src/uencrypt.c
> package/utils/uencrypt/src/uencrypt.h
> package/utils/uencrypt/Makefile
> package/utils/zyxel-bootconfig/Makefile
> package/utils/zyxel-bootconfig/files/95_apply_bootconfig
> package/utils/zyxel-bootconfig/src/Makefile
> package/utils/zyxel-bootconfig/src/zyxel-bootconfig.c
> package/utils/ucode-mod-bpf/Makefile
> package/utils/ucode-mod-bpf/src/bpf.c
> package/utils/firmware-utils/Makefile
> package/utils/yafut/Makefile
> package/utils/debugcc/Makefile
> ===
>
>
> Exclude 'Makefile's
>
> find package -type f -name 'Makefile' -prune -o -type f -print
>
> ===
> ...
> package/utils/util-linux/patches/001-meson-properly-handle-gettext-non-existence.patch
> package/utils/uencrypt/src/CMakeLists.txt
> package/utils/uencrypt/src/uencrypt-mbedtls.c
> package/utils/uencrypt/src/uencrypt-openssl.c
> package/utils/uencrypt/src/uencrypt.c
> package/utils/uencrypt/src/uencrypt.h
> package/utils/zyxel-bootconfig/files/95_apply_bootconfig
> package/utils/zyxel-bootconfig/src/zyxel-bootconfig.c
> package/utils/ucode-mod-bpf/src/bpf.c
> ===
>
> Exclude Makefiles and c files
>
> find package -type f -name 'Makefile' -o -name '*.c' -prune -o -type f -print
>
> ===
> ...
> package/utils/util-linux/patches/001-meson-properly-handle-gettext-non-existence.patch
> package/utils/uencrypt/src/CMakeLists.txt
> package/utils/uencrypt/src/uencrypt.h
> package/utils/zyxel-bootconfig/files/95_apply_bootconfig
> ===
>
> Exclude Makefiles and c files and patch files
>
>
> find package -type f -name 'Makefile' -o -name '*.c' -o -name '*.patch' -prune -o -type f -print
> ===
> ...
> package/utils/uencrypt/src/CMakeLists.txt
> package/utils/uencrypt/src/uencrypt.h
> package/utils/zyxel-bootconfig/files/95_apply_bootconfig
> ===
>
> find package -type f -name 'Makefile' -o -type d -name 'utils' -prune -o -type f -print
>
> ===
> ...
> ===
>
>
> Set your -type accordingly.
The issue is that the pattern of names to exclude is user-defined, so we don't know it in advance.
-Philip
More information about the openwrt-devel
mailing list