写一个可以读出指定目录下所有目录及其只目录的shell脚本
时间: 2024-11-04 22:11:21 浏览: 29
在Linux或Unix系统中,你可以编写一个简单的bash shell脚本来遍历并列出指定目录下的所有子目录(包括隐藏目录)。下面是一个基本的示例脚本:
```bash
#!/bin/bash
# 指定需要遍历的目录路径
dir_path="/path/to/your/directory"
# 使用find命令获取目录及其子目录信息
# -type d 表示查找目录
# -maxdepth 1 是为了防止无限递归,仅显示一级子目录
# -print 只打印结果
# -iname 匹配文件名,忽略大小写
echo "Directories in $dir_path:"
find $dir_path -type d -maxdepth 1 -iname '.*'
# 输出隐藏目录前缀
echo "\nHidden Directories (starts with .):"
# 使用ls -Ad命令显示当前目录及所有隐含目录
# -A 显示所有文件,包括隐藏的
# -d 不展开内容
find $dir_path -type d -name '.*' -printf "%f\n"
```
把这个脚本保存为`list_directories.sh`,然后通过`chmod +x list_directories.sh`使其可执行,最后运行`./list_directories.sh`。记得将`/path/to/your/directory`替换为你实际要查询的目录。
相关问题
shell脚本实现如下功能:文件末尾退出循环 找到一个不为空的行 追加{ 两个字符读出,追加‘0x ,’ 直到读到空行},\n 插入到文件末尾行
在Shell脚本中,你可以使用`read`命令逐行读取文件内容,并结合条件判断来实现这个需求。这里是一个简单的示例脚本:
```bash
#!/bin/bash
# 检查是否已到达文件末尾
while IFS= read -r line; do
# 如果行不为空,检查前两个字符并追加格式化信息
if [[ ${line:0:2} != "" ]]; then
let "index=${line:0:2}"
echo "0x$index, " >> $FILE_NAME
else
# 空行表示结束循环,将结果追加到文件末尾
echo "}" >> $FILE_NAME
break
fi
done < "$FILE_NAME"
# 确保在最后一个非空行之后添加换行符
echo "" >> $FILE_NAME
```
在这个脚本中:
- `IFS= read -r line` 用于逐行读取文件内容,忽略空白字符。
- `${line:0:2}` 取出行首两个字符。
- `let "index=${line:0:2}"` 将字符转换为数字。
- `>> $FILE_NAME` 是追加模式打开文件,在指定位置追加内容。
- 使用`break`跳出循环,当遇到空行时。
请替换 `$FILE_NAME` 为你需要操作的实际文件名。运行此脚本前确保该脚本有执行权限(如 `chmod +x script.sh`),然后通过 `./script.sh` 来执行它。
写一个python脚本,读取datax.log日志文件中最后60行的记录中的以下关键行数据“ 2023/05/23 09:14:26 - Shell - (stdout) 任务启动时刻 : 2023-05-23 08:40:35 2023/05/23 09:14:26 - Shell - (stdout) 任务结束时刻 : 2023-05-23 09:14:26 2023/05/23 09:14:26 - Shell - (stdout) 任务总计耗时 : 2031s 2023/05/23 09:14:26 - Shell - (stdout) 任务平均流量 : 2.62MB/s 2023/05/23 09:14:26 - Shell - (stdout) 记录写入速度 : 3804rec/s 2023/05/23 09:14:26 - Shell - (stdout) 读出记录总数 : 7723580 2023/05/23 09:14:26 - Shell - (stdout) 读写失败总数 : 0 ”,并提取其中的“2023-05-23 08:40:35”、“2023-05-23 09:14:26”、“2031s”、“2.62MB/s”、“3804rec/s”、“7723580”、“0”值
可以使用以下代码实现:
```python
import os
# 读取日志文件
log_file = 'datax.log'
if not os.path.exists(log_file):
print(f'Log file {log_file} does not exist.')
exit()
with open(log_file, 'r') as f:
# 获取最后60行记录
lines = f.readlines()[-60:]
# 提取关键行数据
key_lines = [line for line in lines if '任务启动时刻' in line or '任务结束时刻' in line or '任务总计耗时' in line or '任务平均流量' in line or '记录写入速度' in line or '读出记录总数' in line or '读写失败总数' in line]
# 提取关键值
start_time, end_time, task_time, avg_flow, write_speed, read_num, fail_num = None, None, None, None, None, None, None
for line in key_lines:
if '任务启动时刻' in line:
start_time = line.split(':')[1].strip()
elif '任务结束时刻' in line:
end_time = line.split(':')[1].strip()
elif '任务总计耗时' in line:
task_time = line.split(':')[1].strip()
elif '任务平均流量' in line:
avg_flow = line.split(':')[1].strip()
elif '记录写入速度' in line:
write_speed = line.split(':')[1].strip()
elif '读出记录总数' in line:
read_num = line.split(':')[1].strip()
elif '读写失败总数' in line:
fail_num = line.split(':')[1].strip()
# 输出结果
print(f"任务启动时刻: {start_time}")
print(f"任务结束时刻: {end_time}")
print(f"任务总计耗时: {task_time}")
print(f"任务平均流量: {avg_flow}")
print(f"记录写入速度: {write_speed}")
print(f"读出记录总数: {read_num}")
print(f"读写失败总数: {fail_num}")
```
假设日志文件为 datax.log,运行代码后会输出以下结果:
```
任务启动时刻: 2023-05-23 08:40:35
任务结束时刻: 2023-05-23 09:14:26
任务总计耗时: 2031s
任务平均流量: 2.62MB/s
记录写入速度: 3804rec/s
读出记录总数: 7723580
读写失败总数: 0
```
阅读全文