bash – 删除文件夹/文件名的所有前导空格
发布时间:2020-12-16 01:58:44 所属栏目:安全 来源:网络整理
导读:我已经构建了一个命令来删除目录中所有文件夹/文件名的所有前导空格(带子目录). find /dir/* -depth -execdir rename 's/^s+//g' * "{}" ; 它适用于一些小目录(带有一些子目录)但是大型目录需要很长时间.我看到命令执行的次数超过了必要的次数,但我不知道
我已经构建了一个命令来删除目录中所有文件夹/文件名的所有前导空格(带子目录).
find /dir/* -depth -execdir rename 's/^s+//g' * "{}" ; 它适用于一些小目录(带有一些子目录)但是大型目录需要很长时间.我看到命令执行的次数超过了必要的次数,但我不知道为什么. 有人可以建议如何加快速度吗? /编辑:我使用Debian 8.2作为操作系统. 解决方法
我认为你误解了find的-execdir参数是如何工作的.重命名命令将从包含匹配文件的子目录运行,但仍会为每个匹配的文件调用它.您的重命名参数包含*通配符,因此在每个包含N个文件的子目录中,您将在N ^ 2个文件上调用重命名. (1代表“{}”填写了.)
问题是,我认为你的重命名正则表达式只能起作用*.我认为它实际上不会匹配“{}”部分. 总结(包括上面的评论): >使用-regex仅查找要重命名的文件. 另一种方法可能是查找所有具有以空格开头的文件/文件夹的子目录,然后在这些目录中运行rename *. Gut感觉第一种方法效率更高,但可能取决于匹配文件的数量和分布. (对不起,我没时间为你写单行内容!) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |