如何删除除某些特定文件之外的所有文件(对于目录中的许多文件夹)?通过 bash 脚本

如何删除除某些特定文件之外的所有文件(对于目录中的许多文件夹)?通过 bash 脚本

因此,我有一个主文件夹,其中包含大约 800 个子文件夹(例如 1、2、3...),其中包含许多文件,但我想删除除以 *tsv 结尾的文件之外的所有其他文件。有没有办法通过 bash 脚本来做到这一点?

主文件夹

文件夹 #1

  • 示例.txt
  • 样本2.txt
  • 测试.tsv
  • 样本.tsv

文件夹 #2

  • 示例.txt
  • 样本2.txt
  • 测试.tsv
  • 样本.tsv

等等..

先感谢您。

答案1

Linux:

您可以使用此命令:

find . ! -name '*.tsv' -type f -exec rm -f {} +

此命令将删除除与 flag 后的模式匹配的文件-name'*.tsv'在本例中)之外的所有文件。所有文件夹将被保留。

(答案改编自这个帖子

视窗:

我使用以下命令使其工作:

for /R %f in (*.*) do @echo %f | findstr /v ".tsv" | for /f %f in ('more') do @del "%f"

可能还有更优雅的方法,但它可以完成工作。

相关内容