我需要从查找结果中排除多个目录。我知道如何通过在@material-ui
命令中进行硬编码来做到这一点,但是能否将排除的dir的列表存储为变量或数组,然后在find命令中使用?
这是我的工作命令:在此命令中,我是find
除touching
,{ {1}}和dumped
目录。
maxdepth 1
如果您注意到我在.
命令中提供了硬编码,以排除目录。
是否有任何方法可以将列表存储在变量中并传递给./tmp
命令?
类似./garbage
并在以后使用吗?
我尝试了以下操作,但没有成功:
find . -maxdepth 1 ! -path "." ! -path "./tmp" ! -path "./garbage" -type d -exec touch {}/dumped 2>/dev/null \;
答案 0 :(得分:2)
未经测试:使用数组
find_clauses=(
-maxdepth 1
! -path "."
! -path "./tmp"
! -path "./garbage"
-type d
-exec touch {}/dumped ';'
)
find . "${find_clauses[@]}" 2>/dev/null
如果要将排除的目录放在列表中,仍然可以动态构建find子句:
exclude_dirs=( . ./tmp ./garbage )
find_clauses=( -maxdepth 1 )
for d in "${exclude_dirs[@]}"; do find_clauses+=( ! -path "$d" ); done
find_clauses+=(
-type d
-exec touch {}/dumped ';'
)
find . "${find_clauses[@]}" 2>/dev/null