如何在此 bash 单行中实现并行性



有人可以帮我整理这个肮脏的单行代码并实现并行性吗?

find . -name "*.php" -exec rename 's/.php$/.txt/' '{}' ; && chown www-data:www-data -R * && chmod 0755 -R * && find . -name "*.html" -exec rename 's/.html$/.txt/' '{}' ; && find . -name ".htaccess" -delete

将并行性添加到一组 I/O 绑定任务只会在并行任务共享同一 I/O 通道时使其变慢。(提示:他们在这里这样做。

您可以在此处执行的唯一有用的优化是减少遍历同一目录树的次数。

find . -exec chown www-data:www-data {} ; 
  -exec chmod 0755 {} ; 
  ( -name "*.php" -exec rename 's/.php$/.txt/' '{}' ; 
  -o -name "*.html" -exec rename 's/.html$/.txt/' '{}' ; 
  -o -name ".htaccess" -delete )

这仍然可以调整,但例如,与将五个目录遍历减少到一个相比,避免chown您知道要删除的文件是小土豆。

最新更新