关于bash:在bash中从一个文件中读取文件名称并检查当前目录是否保护这些文件

13次阅读

共计 670 个字符,预计需要花费 2 分钟才能阅读完成。

目标:在 bash 中从一个文件中读取文件名称,并查看当前目录下的所有文件,若不存在则返回提醒
实现:check_file.sh

#!/bin/bash

# 获取以后门路
CRTDIR=$(pwd)

i=0
# 从保留了文件名称的 txt 文件中获取文件名,并生成数组
for line in $(cat filelist.txt)
do
  file_list[$i]=${line%%[[:cntrl:]]}
  ((i++))
done

# 查看数组中的文件是否存在于当前目录及所有的子目录下
for FILE in "${file_list[@]}"
do
  file_count=$(find $CRTDIR -name $FILE | wc -l)
  if [[$file_count -eq 0]]
  then
    echo "Warning: $FILE not found in $CRTDIR!"
  fi
done

应用:

  • 将 check_file.sh 与 filelist.txt 两个文件放到须要查看的目录下
  • Windows 零碎下,能够用 Git Bash,先转到该目录
  • 输出./check_file.sh, 运行脚本

例子:

# file.txt
1.pdf
2.cad
3.txt
4.exe
// 目录构造
BashTest
├─ 1
│  └─ 3.txt
├─ check_file.sh
└─ filelist.txt
$ ./check_file.sh
Warning: 1.pdf not found in /g/BashTest!
Warning: 2.cad not found in /g/BashTest!
Warning: 4.exe not found in /g/BashTest!

人能常清静, 天地悉皆归

正文完
 0