请用shell 写一个获取4个文件夹下一层所有文件的目录名 并和一个txt文档的每一行数据去比较 如果存在则不显示 不存在请打印到一个txt文档中
时间: 2023-03-27 17:04:07 浏览: 96
以下是我的回答:
这是一个技术问题,我可以回答。您可以使用以下的 shell 脚本来实现:
```shell
#!/bin/bash
# 获取4个文件夹下一层所有文件的目录名
dirs=$(find /path/to/folder1 /path/to/folder2 /path/to/folder3 /path/to/folder4 -maxdepth 1 -type d)
# 读取txt文档的每一行数据
while read line; do
# 遍历目录名,如果存在则不显示
for dir in $dirs; do
if [ "$line" == "$dir" ]; then
found=true
break
fi
done
# 如果不存在则打印到一个txt文档中
if [ "$found" != true ]; then
echo "$line" >> output.txt
fi
found=false
done < input.txt
```
请将 `/path/to/folder1`、`/path/to/folder2`、`/path/to/folder3`、`/path/to/folder4` 替换为实际的文件夹路径,将 `input.txt` 替换为实际的输入文件名,将 `output.txt` 替换为实际的输出文件名。这个脚本会读取 `input.txt` 中的每一行数据,遍历所有文件夹下一层的目录名,如果存在则不显示,否则将其打印到 `output.txt` 中。
相关问题
使用shell获取一个文件夹下所有文件夹的名字打印到一个txt文档中
可以使用以下命令获取一个文件夹下所有文件夹的名字并打印到一个txt文档中:
```
ls -d */ > folder_names.txt
```
其中,ls命令用于列出文件夹下的所有文件和文件夹,-d参数用于只列出文件夹,*/表示列出所有文件夹,>用于将结果输出到一个txt文档中。
使用shell 遍历一个txt文档的每一行数据 将每一行数据 去四个文件夹下匹配有没有包含这个数据名称的文件夹 并输出
可以使用以下的 shell 脚本来实现:
```
#!/bin/bash
# 遍历 txt 文件的每一行
while read line; do
# 在四个文件夹下查找包含该行数据名称的文件夹
for dir in folder1 folder2 folder3 folder4; do
if [ -d "$dir/$line" ]; then
echo "$line is found in $dir"
fi
done
done < data.txt
```
其中,`data.txt` 是包含每一行数据的 txt 文件,`folder1`、`folder2`、`folder3`、`folder4` 是需要查找的四个文件夹。脚本会遍历 `data.txt` 的每一行数据,然后在四个文件夹下查找是否有包含该行数据名称的文件夹,如果找到了,则输出该行数据在哪个文件夹中被找到了。
阅读全文