Bash脚本:查找所有文件types和path

使用Bash,如何遍历指定文件夹中的文件夹,查找指定文件types的所有文件,并且每次find文件时,都将文件名和完整文件path的完整文件path作为variables传递给另一个文件名Bash脚本,执行它,并继续search下一个文件?

假设一个GNU发现 (这不是不合理的),你可以使用只是找到:

find /path -type f -name '*.ext' -exec my_cool_script \{\} \; 

找到就是这样。 使用xargs处理文件/目录的长列表。 此外,为了处理正确的名称与空间和这样的问题,我发现最好的find行命令是:

 find ${directory} -name "${pattern}" -print0 | xargs -0 ${my_command} 

诀窍是找到与xargs -0兼容的-print0:它用'\ 0'替换了endlines来正确处理空格和转义字符。 当你的文件列表太长时,使用xargs会给你一些“行太长”的信息。

你可以用–no-run-if-empty来使用xargs来处理空的列表和 – 替换来管理复杂的命令。

如果你安装了GNU Parallel http://www.gnu.org/software/parallel/,你可以这样做:

 find . -name '*.ext' | parallel echo {} '`dirname {}`' 

用你最喜欢的bash命令替换echo ,并用你正在查找的文件扩展名。

观看GNU Parallel的介绍视频了解更多信息: http : //www.youtube.com/watch?v = OpaiGYxkSuQ

看起来非常像功课。

 find /path -type f -name "*.ext" -printf "%p:%h\n" | while IFS=: read ab do # execute your bash script here done 

阅读find的更多printf选项的手册页….