在shell脚本里增加number=$(ls /data/log/nginx/ | grep host-443.access.log | grep -o '[0-9]\+' | tr '\n' ','),然后执行mv命令其中mv /data/$(number).log
时间: 2023-07-16 09:17:21 浏览: 103
根据你的脚本,你想要将 `/data/log/nginx/host-443.access.log` 的数字部分提取出来,并将它们作为参数传递给 `mv` 命令,以便将这些文件移动到 `/data/` 目录下。
你可以使用循环来遍历数字列表,并构造出每个文件的路径名,然后将其作为参数传递给 `mv` 命令。以下是一个示例脚本:
```
#!/bin/bash
# 提取数字列表
number=$(ls /data/log/nginx/ | grep host-443.access.log | grep -o '[0-9]\+' | tr '\n' ',')
# 将逗号分隔的数字列表转换为数组
number_array=(${number//,/ })
# 遍历数字列表
for n in "${number_array[@]}"
do
# 构造文件路径
file="/data/log/nginx/host-443.access.log${n}"
# 移动文件
mv "$file" "/data/${n}.log"
done
```
在这个脚本中,我们首先提取数字列表,然后将其转换为数组。接下来,我们使用 `for` 循环来遍历数组中的每个数字,为每个数字构造出文件路径,并将其移动到 `/data/` 目录下,以 `${n}.log` 为新的文件名。
相关问题
在shell脚本里使用ls /data/log/nginx/ | grep host-443.access.log | grep -o '[0-9]\+'
这个命令可以列出`/data/log/nginx/`目录下所有以`host-443.access.log`结尾的文件,并从中提取出文件名中的数字部分。具体来说,`ls /data/log/nginx/`列出该目录下的所有文件和文件夹,`grep host-443.access.log`筛选出以`host-443.access.log`结尾的文件名,`grep -o '[0-9]\+'`提取出文件名中的数字部分。
如果要将提取出的数字存储到一个变量中,可以这样写:
```
number=$(ls /data/log/nginx/ | grep host-443.access.log | grep -o '[0-9]\+')
```
这样就将提取出的数字存储到了`number`变量中。如果有多个匹配的文件,那么提取出来的数字会以换行符分隔,可以使用`tr`命令将其转换为逗号分隔的列表:
```
number=$(ls /data/log/nginx/ | grep host-443.access.log | grep -o '[0-9]\+' | tr '\n' ',')
```
通过命令获取/data/log/nginx/host-443.access.log中的443
可以使用以下命令获取 `/data/log/nginx/host-443.access.log` 中的 `443`:
```
grep -o '443' /data/log/nginx/host-443.access.log
```
这将会输出所有匹配到的 `443`,每个匹配到的 `443` 占一行。如果你只想知道 `443` 出现了多少次,可以使用以下命令:
```
grep -o '443' /data/log/nginx/host-443.access.log | wc -l
```
这将会输出 `443` 出现的总次数。
阅读全文
相关推荐















