使用shell 遍历四个文件夹下的文件名称 去和一个txt文档的每一行匹配 如果有则不打印 如果没有匹配到则打印到一个txt文档中
时间: 2023-03-28 07:00:33 浏览: 69
可以使用以下 shell 脚本来实现这个功能:
```
#!/bin/bash
# 遍历四个文件夹下的文件名称
for file in folder1/* folder2/* folder3/* folder4/*
do
# 读取 txt 文档的每一行
while read line
do
# 如果匹配到了,则不打印
if [[ "$file" == *"$line"* ]]
then
break
fi
done < txt_file.txt
# 如果没有匹配到,则打印到 txt 文档中
if [ $? -ne ]
then
echo "$file" >> output.txt
fi
done
```
这个脚本会遍历四个文件夹下的所有文件,然后读取 txt 文档的每一行,将每一行与文件名进行匹配。如果匹配到了,则不打印;如果没有匹配到,则将文件名打印到 output.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` 的每一行数据,然后在四个文件夹下查找是否有包含该行数据名称的文件夹,如果找到了,则输出该行数据在哪个文件夹中被找到了。
请写一个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 文件的某一行,则跳过;如果文件名没有匹配到任何一行,则输出到输出文件中。
阅读全文