如何删除没有特定扩展名的文件?

问题描述:

如何在当前工作目录下递归地删除所有没有.txt.exe扩展名的文件?我需要一个班轮。如何删除没有特定扩展名的文件?

我想:

find . ! -name "*.txt" "*.exe" -exec rm -r {} \ 
find -type f -regextype posix-extended -iregex '.*\.(txt|exe)$' 
+1

我认为这可以帮助你: http://unix.stackexchange.com/questions/153862/remove-all-files-directories-except-for-one-file –

+0

你的一个班轮命令工作? – sureshkumar

+0

他们没有工作。该链接也没有帮助。 –

试试这个。

find . -type f ! -name "*.exe" ! -name "*.txt" -exec rm {} \; 

上面的命令将删除所有比当前目录和递归子目录中的.exe和.txt扩展名的文件的其他文件。

+0

谢谢,它的工作。 –

如果你有GNU找到与-delete行动:

find . -type f ! \(-name '*.txt' -o -name '*.exe' \) -delete 

如果没有:使用-exec ... {} +与链接的参数执行rm只是一次

find . -type f ! \(-name '*.txt' -o -name '*.exe' \) -exec rm -f {} +