除了要保留的一小部分文件外,如何递归删除目录中的所有内容?例如,让我们尝试删除所有名为f2
和的文件f5
。
# Create a testing ground
mkdir -p d{1..3}
touch d{1..3}/f{1..5}
# Remove all files EXCEPT ones named f2 and f5.
find . -type f -not -name ('f2'|'f5') -type f -exec rm -f '{}' +
# Remove empty directories
find . -type d -empty -delete
产生:
bash: syntax error near unexpected token `('
最终目标是从更大的C用户空间应用程序中执行此操作,但是使用system()
执行命令行命令似乎要容易得多。
find . -type f -not \( -name f2 -o -name f5 \) -delete
应该做。
-delete
就像-exec rm -f '{}' +
但更短,甚至更有效。但是先运行它而不要运行它,以确认它仅获取您确实要删除的文件。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句