2016-06-19 276 views
0

我想删除使用指定文件创建的所有文件和子目录。我目前使用的命令来删除文件和目录shell脚本从linux目录中删除文件和子目录

find . ! -name file.txt -type d -exec rm -r {} + #this is for sub directories 
find . ! -name file.txt -type f -exec rm -f {} + #this is for files 

当我运行这些命令两次它删除所有文件和子目录,但我想删除创建离开一个文件一次排序的所有文件和目录。任何帮助是非常可观的。 问候 Jitendra

+0

我不明白的问题。具体来说,“通过使用指定文件创建”和“一次排列一个文件”意味着什么?你可以在你想要的命令之前和之后添加一个目录/文件结构的例子吗? –

+0

嗨本杰明,谢谢你的回应。由于这些文件有一些SAR扩展,当它被提取时,它会创建一个文件夹或子目录。我想一次删除文件以及子目录。但我不知道在同一时间点删除父目录中所有目录中的一个文件 –

回答

0

GNU找到可以直接删除文件和目录:

find ! -name file.txt -delete 

它会给错误消息,因为它不能删除该目录多达file.txt,但一切还是会被删除。

如果你想保留这些文件file1.txtfile2.txtfile3.txt,连锁的条件是这样的:

find ! \(-name file1.txt -o -name file2.txt -o -name file3.txt \) -delete 
+0

感谢Sapanoia的回复,假设我有一个Directory1。在那个目录中,我有9个文件,其中有扩展名为.tar的文件,如下所示; –

+0

如果你想排除所有'.tar'文件,使用如下命令:'find! -name'* .tar'-delete'。 – sapanoia

+0

嗨Sapanoia,我仍然无法解决可能我不会让你清楚。非常遗憾。假设我在目录中有几个文件和子目录。我想要删除所有的子目录,很少的文件名(file1,txt,file2.txt),但是'SAPCAR'是另一个我不想删除的目录中的文件名。你能推荐我该怎么做。 –