我试图递归到文件夹,然后使用bash脚本在其上运行命令。有什么建议?

最佳答案

我想,如果想递归到目录中,在其中找到的每个文件上执行命令,我会使用find命令,而不是使用shell脚本编写任何内容。

该命令可以接收很多参数,例如type可以过滤返回的文件类型,或者exec可以对每个结果执行命令。

例如,要查找我当前所在目录下的目录:

find . -type d -exec echo "Hello, '{}'" \;

这会让我有点像:
Hello, '.'
Hello, './.libs'
Hello, './include'
Hello, './autom4te.cache'
Hello, './build'
Hello, './modules'

同样可以找到当前目录下的文件:
find . -type f -exec echo "Hello, '{}'" \;

这会给我这样的东西:
Hello, './config.guess'
Hello, './config.sub'
Hello, './.libs/memcache_session.o'
Hello, './.libs/memcache_standard_hash.o'
Hello, './.libs/memcache_consistent_hash.o'
Hello, './.libs/memcache.so'
Hello, './.libs/memcache.lai'
Hello, './.libs/memcache.o'
Hello, './.libs/memcache_queue.o'
Hello, './install-sh'
Hello, './config.h.in'
Hello, './php_memcache.h'
...

有人会说“不是 shell ”……但是为什么要重新发明轮子呢?
(并且在某种程度上,它是shell ^^)

有关更多信息,您可以查看:
  • man find
  • 与Google一起发现的许多教程,例如Unix Find Command Tutorial
  • 关于bash - 递归读取文件夹并在每个文件夹上执行命令,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1333813/

    10-14 17:23
    查看更多