删除Bash中以〜和#结尾的两个文件?

时间:2018-10-02 08:52:16

标签: linux bash

为什么不起作用? 我正在尝试删除以〜和#

结尾的文件
find . (-name "*~" -o -name "*#") -delete

2 个答案:

答案 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