请写一个shell脚本 功能为:四个文件夹下的所有文件名 一次去和一个txt文档的每一行去匹配 匹配不到则输出到一个txt文档中
时间: 2023-03-28 22:00:42 浏览: 62
可以的,以下是一个示例的 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 文件的某一行,则跳过;如果文件名没有匹配到任何一行,则输出到输出文件中。
相关问题
编写一个 shell 脚本,罗列当前路径下所有以f开头的文件名(注意:不包 括文件夹
)。
好的,这是一个简单的问题,以下是脚本代码:
```bash
#!/bin/bash
for file in $(ls f*)
do
if [ -f "$file" ]; then
echo "$file"
fi
done
```
这个脚本将列出当前路径下所有以字母"f"开头的文件名。
写一个将目录下所有的文件名打印到txt文件中的shell脚本
可以使用以下 shell 脚本将指定目录下所有文件名打印到一个 txt 文件中:
```
#!/bin/bash
# 指定目录路径
dir_path="/path/to/directory"
# 将目录下所有文件名保存到 files.txt 文件中
ls $dir_path > files.txt
```
这个脚本会使用 ls 命令列出指定目录下的所有文件名,并将结果输出到一个名为 files.txt 的文件中。
如果需要将结果追加到已有的文件中,可以使用 >> 符号,例如:
```
ls $dir_path >> files.txt
```
希望可以帮助到您!