Проблема, добирающаяся regex для работы с находкой

Для buildroot все Ваши сценарии должны быть помещены в $path_to_buildroot/output/target/etc/init.d перед изображением сборки. В моем случае этот каталог содержит rcS и немного сценариев по имени S [0-99] script_name. Таким образом, можно создать собственный start\stop сценарий.

rcS:

#!/bin/sh

# Start all init scripts in /etc/init.d
# executing them in numerical order.
#
for i in /etc/init.d/S??* ;do

     # Ignore dangling symlinks (if any).
     [ ! -f "$i" ] && continue

     case "$i" in
    *.sh)
        # Source shell script for speed.
        (
        trap - INT QUIT TSTP
        set start
        . $i
        )
        ;;
    *)
        # No sh extension, so fork subprocess.
        $i start
        ;;
    esac
done

и например S40network:

#!/bin/sh
#
# Start the network....
#

case "$1" in
  start)
    echo "Starting network..."
    /sbin/ifup -a
    ;;
  stop)
    echo -n "Stopping network..."
    /sbin/ifdown -a
    ;;
  restart|reload)
    "$0" stop
    "$0" start
    ;;
  *)
    echo $"Usage: $0 {start|stop|restart}"
    exit 1
esac

exit $?
2
05.11.2013, 02:37
2 ответа

Ваш пример смешивает одинарную кавычку и двойную кавычку. И найдите, хочет шаблон, который соответствует целому имени файла, таким образом, Вы хотите начать/закончить шаблон с '*'.

Это найдет все файлы, которые имеют шаблон, который Вы описываете:

find yourpath -name "*[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]*"

Но если Вы хотите использовать regextype, Вы нуждаетесь в "posix-egrep" и отмечаете тщательно, что regex должен соответствовать всему пути,

find yourpath -regextype posix-egrep  -regex ".*[0-9]{4}-[0-9]{2}-[0-9]{2}.*"
5
27.01.2020, 21:57

Первый пример должен быть:

find yourpath -name "*[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]*"
                               ^

Четвертая скобка была неправильной

0
27.01.2020, 21:57

Теги

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