请用shell 列出4个文件夹下的文件夹的名称 并和一个txt文档的每一行去匹配 如果匹配到则不输出 匹配不到则输出这个文件夹名称到一个txt目录下
时间: 2023-03-28 10:00:42 浏览: 69
可以使用以下命令来列出4个文件夹下的文件夹名称:
```
ls -d */ > folders.txt
```
然后使用以下命令来匹配txt文档的每一行:
```
while read line; do grep -q "$line" folders.txt || echo "$line" >> output.txt; done < txt文档路径
```
这个命令会将匹配不到的文件夹名称输出到output.txt文件中。
相关问题
使用shell 遍历四个文件夹下的文件名称 去和一个txt文档的每一行匹配 如果有则不打印 如果没有匹配到则打印到一个txt文档中
可以使用以下的 shell 脚本来实现:
```shell
#!/bin/bash
# 遍历四个文件夹下的文件名称
for file in folder1/* folder2/* folder3/* folder4/*
do
# 读取 txt 文档的每一行
while read line
do
# 如果匹配到了,则不打印
if [[ "$file" == *"$line"* ]]
then
break
fi
done < "file.txt"
# 如果没有匹配到,则打印到 txt 文档中
if [ $? -ne ]
then
echo "$file" >> "output.txt"
fi
done
```
这个脚本会遍历四个文件夹下的所有文件,然后读取一个名为 file.txt 的文本文件的每一行,将每一行的内容与文件名进行匹配。如果匹配到了,则不打印;如果没有匹配到,则将文件名输出到一个名为 output.txt 的文本文件中。
请写一个shell脚本 功能为:四个文件夹下的所有文件名 一次去和一个txt文档的每一行去匹配 匹配不到则输出到一个txt文档中
可以的,以下是一个示例的 shell 脚本:
```bash
#!/bin/bash
# 定义四个文件夹的路径
folder1="/path/to/folder1"
folder2="/path/to/folder2"
folder3="/path/to/folder3"
folder4="/path/to/folder4"
# 定义 txt 文件的路径
txt_file="/path/to/txt_file.txt"
# 定义输出文件的路径
output_file="/path/to/output_file.txt"
# 遍历四个文件夹下的所有文件名
for file in $(find $folder1 $folder2 $folder3 $folder4 -type f -printf "%f\n"); do
# 读取 txt 文件的每一行
while read line; do
# 如果文件名匹配到了 txt 文件的某一行,则跳过
if [[ "$file" == "$line" ]]; then
continue 2
fi
done < $txt_file
# 如果文件名没有匹配到任何一行,则输出到输出文件中
echo $file >> $output_file
done
```
这个脚本会遍历四个文件夹下的所有文件名,并读取 txt 文件的每一行,将文件名与 txt 文件的每一行进行匹配。如果文件名匹配到了 txt 文件的某一行,则跳过;如果文件名没有匹配到任何一行,则输出到输出文件中。