AIX:查找名称包含特定字符串的文件,并将其添加到列表中

时间:2018-11-26 21:02:07

标签: list find filenames string-matching aix

我们需要在目录中查找名称包含特定字符串的文件,并将其添加到列表中。

假设我们在包含字符串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 :(得分:1)

实际上,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"