find . -type d ! \( -name "保留1.txt" -o -name "保留2.jpg" -o -name "保留3.doc" \) -exec rm -r {} \;
时间: 2024-01-22 08:02:49 浏览: 59
这个命令可以用来删除当前目录下除了指定的几个文件以外的所有子目录。具体来说,这个命令使用了 `find` 命令来找到当前目录下所有文件夹,然后使用 `-type d` 选项来限制搜索结果只包括文件夹。
接着,使用 `!` 表示否定,即排除符合括号内条件的结果。括号内使用 `-name` 选项指定要保留的文件名,使用 `-o` 表示或者的关系。
最后,使用 `-exec` 选项来执行 `rm -r {}` 命令,其中 `{}` 表示 `find` 命令搜索到的每个文件夹名字,`\;` 表示命令执行结束。
因此,这个命令可以删除当前目录下除了指定的几个文件以外的所有子目录。但是需要注意,这个命令非常危险,因为误删文件夹可能会导致数据丢失,建议谨慎使用。
相关问题
linux find -name 排除 !
在Linux命令行中,可以使用"find"命令来查找指定目录中符合某一条件的文件或目录。通过使用"-name"参数可以指定要查找的文件或目录的名称。
而在使用"find"命令时,有时我们可能需要排除某些文件或目录,这时可以使用"!"(感叹号)来实现。具体地说,"!"可以放在"-name"参数前面,用于排除与指定名称匹配的文件或目录。
例如,我们有一个名为"documents"的目录,其中包含多个文件,如"file1.txt"、"file2.doc"、"file3.txt"等。如果我们想要查找该目录下所有以".txt"结尾的文件,但要排除名为"file2.doc"的文件,可以使用以下命令:
```
find documents -name "*.txt" ! -name "file2.doc"
```
这个命令将会列出所有满足以".txt"结尾命名规则的文件,但不包括名为"file2.doc"的文件。
需要注意的是,在使用"find"命令时,命令行参数的顺序很重要。在上述例子中,"-name"和"!"之间需要有一个空格。
综上所述,可以通过在"find"命令中使用"!"参数来排除符合某一条件的文件或目录。
linux find -name多个名字 查找文件
在Linux中,可以使用find命令来查找文件。而在find命令中,使用“-name”选项可以指定要查找的文件名。如果要查找多个文件名,可以使用“-o”选项来连接多个“-name”选项。具体来说,命令格式如下:
find 目录路径 -name 文件名1 -o -name 文件名2 -o -name 文件名3 ...
其中,目录路径表示要查找的目录路径;文件名1、文件名2、文件名3等表示要查找的多个文件名。
例如,如果要在/home目录中查找所有以“.txt”或“.doc”结尾的文件,可以使用以下命令:
find /home -name "*.txt" -o -name "*.doc"
这条命令中,“*.txt”表示以“.txt”结尾的文件名,“*.doc”表示以“.doc”结尾的文件名。选项“-o”表示逻辑或的关系,表示要求同时查找满足“*.txt”或“*.doc”条件的文件。
使用以上命令可以在Linux系统中查找多个文件名,且可以通过该方法实现更复杂的查找需求。
阅读全文