我需要构建一个目录中存在的文件列表,但还要传入一个包含要排除的目录列表的文件。
我已经看到了以下建议,但在类型标志方面我没有运气:
find $dir_name $(printf "! -name %s " $(cat $exclude_file))
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点,或者我是否需要创建整个列表,然后通过它删除与排除目录中部分匹配的列表。
鉴于您exclude_file
包含路径,而不是名称,您需要使用-path
来匹配其条目。要排除匹配目录的子目录,您还需要-prune
它们。这应该有效:
find . -type d \( $(printf -- "-path */%s -o " $(cat "$exclude_file")) -false \) -prune -o -print
Run Code Online (Sandbox Code Playgroud)
如果只想查看文件,则只能打印文件:
find . -type d \( $(printf -- "-path */%s -o " $(cat "$exclude_file")) -false \) -prune -o -type f -print
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2476 次 |
最近记录: |