7

如何检查给定文件是否在目录中,包括具有该目录的任何目录,等等?我想在 bash 脚本中做一个小的完整性检查,以检查用户是否没有尝试更改项目目录之外的文件。

4

3 回答 3

10

使用 find (它从 cwd 或提供的目录路径中递归搜索):

find $directory_path -name $file_name | wc -l

将其用作 bash 脚本的一部分的示例:

#!/bin/bash
...

directory_path=~/src/reviewboard/reviewboard
file_name=views.py

file_count=$(find $directory_path -name $file_name | wc -l)

if [[ $file_count -gt 0 ]]; then
    echo "Warning: $file_name found $file_count times in $directory_path!"
fi
...
于 2012-10-20T14:54:09.553 回答
3

如果找不到文件,find 不返回任何内容(即空字符串)。if [ '' ]将评估为 FALSE。

if [ $(find "$search_dir" -name "$filename") ]; then 
  echo "$filename is found in $search_dir"
else
  echo "$filename not found"
fi
于 2012-10-20T16:50:14.380 回答
1

find /path/to/dir -name "filename" | wc -l会给你文件存在的次数/path/to/dir及其子目录。任何大于 0 的结果都表示文件位于正确的路径中。任何等于 0 的结果都意味着文件不在路径中或不存在。

于 2012-10-20T14:54:35.857 回答