我试图用包含字符串的名称删除目录中的所有文件(递归)。最后,我想这样做:
find . -type f -name '*.m3d*' -delete
但在运行delete之前,我测试了是否找到了以下所有文件:
find . -type f -name '*.m3d*',但这会返回一个不完整的列表:
./Result/h-field (f=15)_1,1.m3d
./Result/e-field (f=15)_1,1.m3d
./Result/h-field (f=15)_2,1.m3d
./Result/e-field (f=15)_2,1.m3d 完整的列表如下所示:
find . | grep m3d
./Result/e-field (f=15)_1,1_m3d.rex
./Result/h-field (f=15)_1,1.m3d
./Result/e-field (f=15)_1,1.m3d
./Result/h-field (f=15)_2,1_m3d.rex
./Result/e-field (f=15)_2,1_m3d.rex
./Result/h-field (f=15)_2,1.m3d
./Result/e-field (f=15)_2,1.m3d 我阅读了find的手册页,它说在字符串的末尾不能使用通配符,就像我在最初的尝试中尝试的那样。删除所有包含我的字符串但不一定在名称末尾的文件的好方法是什么?
发布于 2022-11-22 18:59:14
我不确定您目前使用的是哪个版本的find,但我没有找到任何引用,说明通配符在字符串的末尾不工作。
您的问题似乎是文件是如何命名的。搜索中没有显示的文件与*.m3d*不匹配,因为它们在字符串m3d之前没有一个点(.),而是一个下划线(_),因此find不会将它们与给定的条件匹配。
命令find . -type f -name '*m3d*'应该能够从给定的示例中找到所有这些文件。
https://unix.stackexchange.com/questions/725932
复制相似问题