我有一个目录,其中有几个子目录。每个子目录中都有多个文件。我想删除子目录中除 .pdf 文件之外的所有文件。并保留子目录。我用了
find . -type f ! -iname "*.pdf" -delete
但我必须位于子目录中才能使其正常工作。我也想递归地做。
答案1
在 bash 中,要删除当前目录的所有子目录中的所有非 pdf 文件:
shopt -s extglob
rm */!(*.pdf)
首字母*/
匹配每个子目录,并且外部全局选项启用!( ... )
以下模式:匹配所有文件除了括号内是什么;在本例中,要排除的模式是*.pdf
。如果您可能还有.PDF
扩展名的文件,请改用:
rm */!(*.[pP][dD][fF])