我想删除文件夹“ A”中的所有文件和目录。但是除了该文件夹中的一个文件以外,请说.keep。我已经尝试了以下命令。
find A ! -name '.keep' -type f -exec rm -f {} +
但是上面的命令也会删除文件夹A。我不想要那样。有几个与此相关的答案。但是他们都提到进入该目录。我想在命令中提及该目录,而不用cd-eing进入该目录。
答案 0 :(得分:0)
我们可以使用find命令来过滤内容并将输出传递到xargs进行删除。
您可以使用以下示例作为参考。
示例: 我在名为test的文件夹中有文件夹folder {1..15}。并使用find和xargs删除除文件夹6和11外的所有文件夹。
列出文件夹 〜/桌面/ MyDocuments /脚本/测试$ ls folder1文件夹10文件夹11文件夹12文件夹13文件夹14文件夹15文件夹2文件夹3文件夹4文件夹5文件夹6文件夹7文件夹8文件夹9
使用find命令进行过滤。 〜/ Desktop / MyDocuments / scripts / test $ 查找。 (!-name folder6-和!-iname folder11-和!-iname“。”) ./文件夹1 ./folder2 ./folder3 ./文件夹4 ./文件夹5 ./文件夹7 ./文件夹8 ./folder9 ./文件夹10 ./folder12 ./folder13 ./文件夹14 ./folder15
使用xargs删除文件夹。 〜/ Desktop / MyDocuments / scripts / test $查找。 (!-name folder6-和!-iname folder11-和!-iname“。”)| xargs -I {} rm -rf {}
已删除除文件夹6和11以外的所有文件夹。 〜/桌面/ MyDocuments /脚本/测试$ ls folder11 folder6