为什么不起作用? 我正在尝试删除以〜和#
结尾的文件find . (-name "*~" -o -name "*#") -delete
答案 0 :(得分:3)
在POSIX shell(包括bash)中,您需要转义括号。
find . \( -name "*~" -o -name "*#" \) -delete
这是一个可行的示例(在一个空目录中运行)
#!/usr/bin/bash -eu
mkdir -p a/b/c d/e f
touch a/a~ a/b/b~ 'd/e/e#' 'f/f#' 'root#' 'root~'
find . \( -name "*~" -o -name "*#" \) -delete
find .
答案 1 :(得分:2)
您需要转义,以便find
而不是shell解释它们。
mkdir testme
cd testme
touch "foo~"
touch "bar#"
ls
# With parenthesis escaped
find . \( -name "*~" -o -name "*#" \) -delete
ls
cd ..
rmdir testme