Linux: 如何删除文件夹中除指定名称以外的所有文件?

Linux: how to remove all the files in a folder except ones with specific names?

我在 linux 中有一个文件夹,其中包含一些模拟结果的 .csv 个文件。

文件名如下:

run_0_0.020000_0.010000_15.0_10.0_T0_RealNet.csv
run_0_0.030000_0.090000_10.0_10.0_T0_RealNet.csv
run_0_0.030000_0.080000_12.0_10.0_T0_RealNet.csv

我想删除除 15.0_10.0_T0_

以外的所有文件

您可以使用 find 命令及其内置的删除功能,但如果您只是 $ cp /path/to/dir/*15.0_10.0_T0_* /other/dir 然后删除原始目录,可能会更简单。然后您可以移动新目录来代替原来的目录。您可以使用 $ rm -rf /path/to/dir.

一次删除旧目录及其所有内容

例如,如果您不想删除包含 15.0_10.0_T0_ 的文件,您可以使用 find:

find . -type f ! -name '*15.0_10.0_T0_*' -delete

删除请求文件以外的所有内容的另一种变体:

ls --ignore="*15.0_10.0_T0_*" | xargs rm

或缩短,不要询问并删除 dir 版本(小心 :)):

ls -I "*15.0_10.0_T0_*" | xargs rm -rf

使用 mv /dire/15.0_10.0_T0_* 到目标目录 然后使用 sudo rm -rf 目录名删除整个目录。 希望有用。