我如何使用find
来识别那些不包含具有指定名称的文件的目录?我想创建一个文件,其中包含缺少某个文件的所有目录的列表。
问问题
2854 次
3 回答
3
查找目录:
find -type d > DIRS
查找包含文件的目录:
find -type f -name 'SpecificName' | sed 's!/[^/]*$!!' > FILEDIRS
找出不同之处:
grep DIRS -vf FILEDIRS
于 2013-06-26T08:28:32.287 回答
1
有很多不同的方法可以解决这个问题 - 这是我将采取的方法(bash
假设):
while read d
do
[[ -r ${d}/SpecificFile.txt ]] || echo ${d}
done < <(find . -type d -print)
如果您的目标目录仅存在于某个深度,您可以添加其他选项find
来限制要检查的目录数量...
于 2013-06-26T14:52:11.207 回答
0
这是文件 main.cpp 的示例。在示例中,所有不包含 main.cpp 的目录都被找到。如您所见,我首先获取所有文件夹的列表,然后获取具有 main.cpp 的文件夹列表,然后运行diff
以获取两个列表之间的差异:
diff \
<(find . -exec readlink -f {} \; | sed 's/\(.*\)\/.*$/\1/' | sort | uniq) \
<(find . -name main.cpp -exec readlink -f {} \; | sed 's/\(.*\)\/.*$/\1/' | sort | uniq) \
| sed -n 's/< \(.*\)/\1/p'
于 2013-06-26T09:06:25.267 回答