删除文件夹中除具有特定名称的文件夹外的所有文件夹

里尤·马赫纳(Riju Mahna)

我需要使用日常脚本删除文件夹中的所有文件夹。需要保留当天的文件夹。

文件夹“ myfolder”具有3个子文件夹:“ test1”,“ test2”和“ test3”我需要删除除“ test2”以外的所有文件夹。

我正在尝试在此处匹配确切的名称:

find /home/myfolder -type d ! -name 'test2' | xargs rm -rf

或者

find /home/myfolder -type d ! -name 'test2' -delete

此命令也总是尝试删除主文件夹“ myfolder”!有办法避免这种情况吗?

约翰1024

这将删除其中的所有文件夹,./myfolder./myfolder/test2所有内容将保留:

find ./myfolder -mindepth 1 ! -regex '^./myfolder/test2\(/.*\)?' -delete

怎么运行的

  • find 启动查找命令。
  • ./myfolder告诉find从目录./myfolder及其内容开始。

  • -mindepth 1不匹配./myfolder自身,仅匹配其下的文件和目录。

  • ! -regex '^./myfolder/test2\(/.*\)?'告诉find排除(!)任何与正则表达式匹配的文件或目录^./myfolder/test2\(/.*\)?^匹配路径名的开头。该表达式(/.*\)?匹配(a)斜杠后跟任何东西,或(b)完全不匹配。

  • -delete 告诉find删除匹配(即不排除)的文件。

例子

考虑一个看起来像的目录结构;

$ find ./myfolder
./myfolder
./myfolder/test1
./myfolder/test1/dir1
./myfolder/test1/dir1/test2
./myfolder/test1/dir1/test2/file4
./myfolder/test1/file1
./myfolder/test3
./myfolder/test3/file3
./myfolder/test2
./myfolder/test2/file2
./myfolder/test2/dir2

我们可以运行find命令(不带-delete)来查看其匹配的内容:

$ find ./myfolder -mindepth 1 ! -regex '^./myfolder/test2\(/.*\)?'
./myfolder/test1
./myfolder/test1/dir1
./myfolder/test1/dir1/test2
./myfolder/test1/dir1/test2/file4
./myfolder/test1/file1
./myfolder/test3
./myfolder/test3/file3

我们可以通过查看剩余的文件来验证此方法是否有效:

$ find ./myfolder
./myfolder
./myfolder/test2
./myfolder/test2/file2
./myfolder/test2/dir2

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何删除具有特定名称的文件夹

批处理命令删除所有具有特定名称的子文件夹

文件夹中除一个命名文件夹外的所有文件夹的glob

删除Python中除最新文件夹以外的所有文件夹

如何在Python中删除具有特定名称的文件夹?

如何在文件夹中打印具有特定名称的文件

批处理命令删除所有具有特殊字符的特定名称的子文件夹

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

在子文件夹中找到具有特定名称的空文件夹?

Powershell删除具有特定名称的子文件夹

如何使用Powershell删除具有特定名称的所有文件夹

从某个目录中删除具有特定名称的文件和文件夹

删除除X个最近的文件夹外的所有文件夹

删除UNIX中所有不包含特定名称的文件夹

使用查找在具有特定名称但深度未知的子文件夹中获取文件

删除文件夹中除具有某些前缀的文件外的所有文件

自动复制除该文件夹外的文件夹中的所有文件

删除ntfs驱动器上所有具有特定名称的文件夹

如何删除除父文件夹下的某些特定文件夹以外的所有文件

如何删除文件夹中除最新X子文件夹以外的所有子文件夹?

如何删除特定名称的所有文件夹而不删除其中的目录?

批处理文件,删除目录中除最新文件夹外的所有文件夹

删除目录中除两个特定文件夹外的所有内容

删除具有特定模式的文件夹中的文件

使用Powershell计数子文件夹中具有特定名称的文件数

重命名文件夹中具有特定名称的所有具有特定格式的文件

递归删除solaris中除特定文件外的所有文件+文件夹

在每个子文件夹中创建一个带有特定名称的空文件的文件夹

如何在VBA中打开具有特定名称的文件夹中的文件?