检查文件是否在bash中的给定目录(或子目录)中

时间:2012-10-20 14:50:42

标签: bash

如何检查给定文件是否在目录中,包括具有该目录的任何目录,依此类推?我想在bash脚本中进行一次小的健全性检查,以检查用户是否在尝试更改项目目录之外的文件。

3 个答案:

答案 0 :(得分:4)

使用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
...

答案 1 :(得分:2)

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

if [ $(find "$search_dir" -name "$filename") ]; then 
  echo "$filename is found in $search_dir"
else
  echo "$filename not found"
fi

答案 2 :(得分:1)

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