我想对给定目录的子目录中的所有文件应用Python函数。
在bash .sh
文件中,我列出了所有文件,如下所示:
dir_list=()
while IFS= read -d $'\0' -r file ; do
dir_list=("${dir_list[@]}" "$file")
done < <(find give_directory_Here -mindepth 2 -maxdepth 2 -type d -print0)
但是,有些目录带有模式,可以说模式是unwanted_pattern
,其名称是我想从dir_list
中删除的。
我该怎么做?
我在这里尝试了一些不适合我的事情: solution 1 from stack over flow 要么 solution 2 from stack exchange,依此类推!
答案 0 :(得分:1)
删除bash中列表或数组的某些条目
只需循环并匹配:
result=()
for file in "${dir_list[@]}"
do
if [[ "$file" != *"unwanted_pattern"* ]]
then
result+=("$file")
fi
done
dir_list=( "${result[@]}" )
但是,这是您XY question的答案,而不是您应该做的事情。
更聪明的方法是不通过将这样的检查添加到循环中来首先添加它们,而更聪明的方法是仅find
排除它们:
find give_directory_Here -mindepth 2 -maxdepth 2 -type d ! -path '*unwanted_pattern*' -print0