![删除一系列子目录中的某些文件](https://linux22.com/image/123569/%E5%88%A0%E9%99%A4%E4%B8%80%E7%B3%BB%E5%88%97%E5%AD%90%E7%9B%AE%E5%BD%95%E4%B8%AD%E7%9A%84%E6%9F%90%E4%BA%9B%E6%96%87%E4%BB%B6.png)
我有一个目录,其中有几个子目录。每个子目录中都有多个文件。我想删除子目录中除 .pdf 文件之外的所有文件。并保留子目录。我用了
find . -type f ! -iname "*.pdf" -delete
但我必须位于子目录中才能使其正常工作。我也想递归地做。
答案1
在 bash 中,要删除当前目录的所有子目录中的所有非 pdf 文件:
shopt -s extglob
rm */!(*.pdf)
首字母*/
匹配每个子目录,并且外部全局选项启用!( ... )
以下模式:匹配所有文件除了括号内是什么;在本例中,要排除的模式是*.pdf
。如果您可能还有.PDF
扩展名的文件,请改用:
rm */!(*.[pP][dD][fF])