删除文件夹中除一个文件外的所有文件和目录

时间:2019-07-12 04:38:31

标签: linux command rm

我想删除文件夹“ A”中的所有文件和目录。但是除了该文件夹中的一个文件以外,请说.keep。我已经尝试了以下命令。

find A ! -name '.keep' -type f -exec rm -f {} +

但是上面的命令也会删除文件夹A。我不想要那样。有几个与此相关的答案。但是他们都提到进入该目录。我想在命令中提及该目录,而不用cd-eing进入该目录。

1 个答案:

答案 0 :(得分:0)

我们可以使用find命令来过滤内容并将输出传递到xargs进行删除。

您可以使用以下示例作为参考。

示例: 我在名为test的文件夹中有文件夹folder {1..15}。并使用find和xargs删除除文件夹6和11外的所有文件夹。

  1. 列出文件夹 〜/桌面/ MyDocuments /脚本/测试$ ls folder1文件夹10文件夹11文件夹12文件夹13文件夹14文件夹15文件夹2文件夹3文件夹4文件夹5文件夹6文件夹7文件夹8文件夹9

  2. 使用find命令进行过滤。 〜/ Desktop / MyDocuments / scripts / test $ 查找。 (!-name folder6-和!-iname folder11-和!-iname“。”) ./文件夹1 ./folder2 ./folder3 ./文件夹4 ./文件夹5 ./文件夹7 ./文件夹8 ./folder9 ./文件夹10 ./folder12 ./folder13 ./文件夹14 ./folder15

  3. 使用xargs删除文件夹。 〜/ Desktop / MyDocuments / scripts / test $查找。 (!-name folder6-和!-iname folder11-和!-iname“。”)| xargs -I {} rm -rf {}

  4. 已删除除文件夹6和11以外的所有文件夹。 〜/桌面/ MyDocuments /脚本/测试$ ls folder11 folder6