AIX: найдите файлы с именем, содержащим определенную строку, и добавьте их в список - PullRequest
0 голосов
/ 27 ноября 2018

Нам нужно найти файлы в каталоге с именем, содержащим определенную строку, и добавить их в список.

Предположим, мы создаем список, содержащий имена файлов в определенном каталоге, содержащем строку ABC.

Попробовал это:

file_list=()
str="ABC"
while IFS= read -d $'\0' -r file ; do
file_list=("${file_list[@]}" "$file")
done < <(find . -name "*$str*" -print0)
echo "Files getting appended: ${file_list[@]}"

Если каталог содержит файлы:

ABC.txt, ABCD.txt, XYZ.txt, WXYZ.txt

Тогда ожидаемый вывод приведенного выше фрагмента должен быть:

Files getting appended: ABC.txt ABCD.txt

Получение сообщения об ошибке в AIX:

find: 0652-017 -print0 is not a valid option.

Получил соответствующий пост, который работает для Linux , но не получилось в AIX.

Любая помощь действительно будет оценена!

1 Ответ

0 голосов
/ 27 ноября 2018

Действительно, AIX! Find не поддерживает -print0.Попробуйте что-то вроде этого:

#!/usr/local/bin/bash

file_list=()

touch xABCy
touch 'x ABC y'

str="ABC"

while IFS='\n' read -r file ; do
    file_list+=("$file")
done < <(find . -name "*$str*")

for i in "${file_list[@]}"; do
    printf '\"%s\"\n' "$i"
done

результат:

"./x ABC y"
"./xABCy"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...