Как я могу найти определенный список файлов с Ripgrep?

Первый блок итерирует (неявно) по аргументам командной строки "$@"

for i in "$@"    # same as your "for i"
do
    echo "$i"
done

Второй блок итерирует явно по количеству аргументов, печатая индекс по мере выполнения:

args=$#                          # number of command line args
for (( i=1; i<=$args; i+=1 ))    # loop from 1 to N (where N is number of args)
do
    echo $i
done

Учитывая, что, согласно вашему примеру, $# равно 5, то переменная $i будет принимать значения 1, 2, 3, 4, 5.

Как указано в другом (теперь удаленном) ответе, вы можете ссылаться на аргументы командной строки по индексу следующим образом:

args=$#
for (( i=1; i<=$args; i++ ))
do
    echo "$i - ${!i}"
done
0
15.01.2019, 14:32
1 ответ

ripgrep принимает пути к файлам в качестве аргументов. Так что просто передайте свои файлы в качестве аргументов:

rg pattern file1 file2...

Если ваш список находится в файле с одним путем в строке, используйте xargs:

xargs -d '\n' -a list-file rg pattern

Или, если это список, сгенерированный из find, то:

find./... -print0 | xargs -0 rg pattern
18
28.01.2020, 02:23

Теги

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