如何让find命令搜索时排除指定子目录${all_trr}?
解决find搜索时忽略指定目录的问题
你的问题出在-not -path "${all_trr}"只排除了目录本身,没排除目录里的文件,所以find依然会搜到${all_trr}下的.pdb文件,导致cp报错源文件和目标文件相同。
用-prune选项可以直接跳过整个指定目录,修改后的脚本如下:
dir=$(pwd) all_trr=${dir}/PCA find "$dir" -maxdepth 2 -path "${all_trr}" -prune -o -name "*.pdb" -exec cp {} "${all_trr}" \;
命令解释:
-path "${all_trr}" -prune:匹配到${all_trr}目录后,直接跳过该目录的所有内容,不再遍历它-o:逻辑“或”,表示前面的条件不满足时,执行后面的规则-name "*.pdb" -exec cp {} "${all_trr}" \;:对除了${all_trr}之外的目录下的.pdb文件执行复制操作
另外注意给变量加双引号,避免路径里有空格时出问题。
内容的提问来源于stack exchange,提问作者James Starlight
相关产品推荐
相关产品推荐

