对Bash来说很新,我正在研究一个bash脚本来自动存储/检索来自某个目录的证书。我想出了如何获得一个IP,但如果目录中有多个IP地址的文件,我不确定如何存储IP列表。
例如,我可以查看路径保存在$ {PATH}中的目录
PATH=$(ls path/to/directory)
从名为0.0.0.0Cert.pem
SINGLE_IP=${echo "PATH%%C%"}
SINGLE_IP == 0.0.0.0
但是如果$ {PATH}中有0.0.0.0Cert.pem和1.1.1.1Cert.pem
SINGLE_IP=${echo "PATH%%C%"}
只会获得目录中找到的第一个IP,但是,我需要获取所有IP,以便我可以在以后的脚本中获取所有相关文件。
谢谢!
编辑:
为清楚起见,我只需要文件名中的IP。我不需要Cert.pem或实际IP以外的任何其他内容。
答案 0 :(得分:3)
使用 find
命令:
找到"关键"文件:
find path/to/dir -type f -name *[0-9]Cert.pem
仅从文件名中提取IP地址:
find path/to/dir -type f -name "*[0-9]Cert.pem" -exec sh -c \
'f=$(basename $1); echo "${f%Cert*}"' _ {} \;
输出将采用以下格式:
0.0.0.0
1.1.1.1
...