删除 bash 中除某些文件之外的所有文件,而无需 cd 到目录?

删除 bash 中除某些文件之外的所有文件,而无需 cd 到目录?

我需要每天清理下载目录。

我已看到这个问题并测试了答案

rm !("test 1"|"test 4")

它工作得很好,但需要先 cd 到目录。由于我的应用程序在很多部分需要高于两个目录,所以我不想做类似的事情

cd /app/download
rm !("test 1"|"test 4")
cd ../..

我努力了

rm !("./app/download/test 1"|"./app/download/test 4")

但是,它删除了上层目录的内容,而不是下载/

答案1

您几乎已经到达:

shopt -s extglob   # ← 仅当你尚未启用时才需要
rm./app/download/!("测试 1"|"测试 4")

!(…)使用除 中文件之外的所有文件的完整路径进行扩展。由于您在 的参数前加上了路径!(…)前缀,因此不会删除该目录之上的其他文件。rm./app/download/

相关内容